欢迎来到天天文库
浏览记录
ID:38723155
大小:162.50 KB
页数:4页
时间:2019-06-18
《学习笔记VC++孙鑫(二)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Lesson2: 掌握C++基本语法C++经典语法与应用,类的编写与应用,构造与析构函数,函数的重载,类的继承,函数覆盖,基类与派生类的构造函数、析构函数先后调用顺序,如何在派生类构造函数中向基类的构造函数传递参数,this成员变量,类型转换的内幕,虚拟函数与多态性,引用和指针变量的区别与共同处。VC工程的编译原理与过程,将工程中不同的类拆分到不同的文件中,每一个类由一个.h和.cpp文件共同完成,头文件重复定义问题的解决,培养了学员良好的编程习惯,也为以后分析MFCAppWizard生成的工程奠定了良好基础。1.C++中提供了一套输入
2、输出流类的对象,它们是cin、cout和cerr,对应c语言中的三个文件指针stdin、stdout、stderr,分别指向终端输入、终端输出和标准出错输出(也从终端输出)。cin与>>一起完成输入操作,cout、cerr与<<一起完成输出与标准错误输出。利用cin和cout比C语言中的scanf和printf要方便得多,cin和cout可以自动判别输入输出数据类型而自动调整输入输出格式,不必像scanf和printf那样一个个由用户指定。2. structpoint{}与Classpoint{}最主要的区别是,在未定义情况下
3、structpoint{}中成员默认为public,Classpoint{}中默认private。3. C++主要特点:① 封装性(Encapsulation):把数据与操作数据的函数组织在一起,使程序结构更加紧凑,提高类内部数据的安全性。② 继承性(Inheritance):增加了软件的可扩充性及代码重用性;③ 多态性(Polymorphism):使设计人员在设计程序时可以对问题进行更好的抽象,有利于代码的维护和可重用4. C++中几个特性的实现技术和其它要注意的地方:① 构造函数:创建对象本身,每个类必须有一个构造函数,否则不能创
4、建对象。② 析构函数:将构造函数调用的空间释放。当一个对象生命周期结束时,其所占有的内存空间就要被回收,这个工作就由析构函数来完成。析构函数是“反向”的构造函数,析构函数不允许有返回值,更重要的是析构函数不允许带参数,并且一个类中只能有一个析构函数。③ 根据析构函数的这种特点,我们可以在构造函数中初始化对象的某些成员变量,给其分配内存空间(堆内存),在析构函数中释放对象运行期间所申请的资源。④ 重载:重载构成的条件:函数的参数类型、参数个数不同,才能构成函数的重载。发生在同一个类里。⑤ 覆盖:发生在父类与子类中。::标明父类,(多重继承
5、)。隐藏,继承,⑥ 多态(迟绑定):当C++编译器在编译的时候,发现Animal类的breathe()函数是虚函数,这个时候C++就会采用迟绑定(latebinding)的技术,在运行时,依据对象的类型(在程序中,我们传递的Fish类对象的地址)来确认调用的哪一个函数,这种能力就做C++的多态性。⑦ This指针:1、this指针是一个隐含的指针,它是指向对象本身,代表了对象的地址2、在对象调用pt.output(10,10)时,成员函数除了接受2个实参外,还接受到了一个对象s的地址。这个地址被一个隐含的形参this指针所获取,它等同于
6、执行this=&pt。所有对数据成员的访问都隐含地被加上前缀this->。例如:x=0;等价于this->x=0。⑧ 类的继承特性:① 强制类型转换。如果CFish从CAnimal派生而来。则可以将鱼的对象转换为CAnimal的对象,而反之则不行。从现实中理解也是正常的,鱼可以是动物,而动物却不是鱼。转换时两个对象内存模型必须匹配,例如,char(1)可以转换成int(4),int不能转换成char。② #include与#include"xxx。h"的区别:<>不查找运行时目录,""查找运行时目录!(#include7、xx>引入是源文件,要用上usingnamespacexxx;)③ 如何防止类的重复定义:用#inndefPoint_H_H#definePoint_H_HclassPoint{};#endif来防止5、定义结构体和类时。例如ClassPoint{intx;inty;};要注意一定加上分号,结构体定义默认成员是public,而Class定义默认为private。6、类的定义中,如果未指明成员类型,则缺省为private。而结构体中则缺省为public。7、引用:引用经常用在函数的传参上。另外数值交换函数也经常用引用。例change(in8、t&x,int&y){inttemp;temp=x;x=y;y=x}调用时即可以用 inta=3;intb=4;change(a,b);一般不用指针来作为参数进行数值交换。因为会引起歧义。8、通常将类的定义
7、xx>引入是源文件,要用上usingnamespacexxx;)③ 如何防止类的重复定义:用#inndefPoint_H_H#definePoint_H_HclassPoint{};#endif来防止5、定义结构体和类时。例如ClassPoint{intx;inty;};要注意一定加上分号,结构体定义默认成员是public,而Class定义默认为private。6、类的定义中,如果未指明成员类型,则缺省为private。而结构体中则缺省为public。7、引用:引用经常用在函数的传参上。另外数值交换函数也经常用引用。例change(in
8、t&x,int&y){inttemp;temp=x;x=y;y=x}调用时即可以用 inta=3;intb=4;change(a,b);一般不用指针来作为参数进行数值交换。因为会引起歧义。8、通常将类的定义
此文档下载收益归作者所有