欢迎来到天天文库
浏览记录
ID:37511386
大小:124.50 KB
页数:10页
时间:2019-05-24
《C++实用教程笔记》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、一、文件重复包含处理:方法一:#ifndefA_H#defineA_Hinta;#endif方法二:#pragmaonce(绝大多数编译器支持)二、访问权限的问题1,类外只能访问public2,在类内对象不受访问权限的限制三、构造函数与析构函数1,结构体中的初始化因为成员变量都是public所以可以直接初始化Personone={"qqqq",23,45};2,在类中这样如果成员是public也是可以的,但是这样却降低了类的封装性。3,构造函数1)默认构造函数(可以带参数)I)初始化一般要用对象成员初始化列表2)带参数的构造函数3)默认拷贝
2、构造函数I)默认拷贝构造函数编译器会自动生成但是很多时候是不够用的(浅拷贝)II)自己要重载默认拷贝函数4)默认拷贝函数的调用情况(两种情况都会构造临时的对象)I)对象作为函数的参数II)对象作为函数的返回值III)初始化新对象的时候4,构造的顺序首先构造类成员变量,然后是构造自己。析构的顺序正好相反。、四、const对象Const对象必须初始化,而且之后不能被更改。五、数据共享与成员特性1,静态成员1)静态数据成员I)静态数据成员定义:在类内声明:staticintnnum;在类外定义与分配空间:int类名::nnum=0;II)静态成员
3、的引用可以通过对象引用可以同过类名直接引用2)静态成员函数I)静态成员函数的定义:在类用定义staticvoidChangeData()II)静态静态成员函数的引用:可以通过对象引用可以同过类名直接引用III)静态成员函数的注意点:静态成员函数只可以访问静态成员注意类中的静态成员与普通静态变量和静态函数的区别。一、友元1,友元函数I)友元外部函数FriendCpointinflate(Cpoint&pt,inta)类外定义不要加类作用域II)友元成员函数这个函数是另外一个类的成员函数FriendCpointCpoint::inflate(C
4、point&pt,inta)一定要加上它属于哪一个类2,友元类FriendclassA;友元类中的每一个函数都是类的友元成员函数3,注意点友元只能通过类的对象可以直接访问类的私有成员友元不是该类的成员二、类成员的其他特性1,const成员I)const数据成员初始化后不能改变II)const成员函数A)在参数列表后面加上const关键字B)不能修改任何数据成员C)不能调用非const成员函数(非const成员函数会修改数据成员)D)只有常成员函数在有资格被常对象调用E)const关键字可以区分重载函数Voidprint();Voidprin
5、t()const;是合法的重载。2,mutable成员当数据成员用mutab关键字修饰后,那数据成员就可以在const函数中被修改3,explicit成员用explicit关键字修饰类的构造函数可以强制调用显示的构造函数。4,this指针I)this指针在static成员函数中指向不明确,所以不能在其中使用II)this指针在const函数中的类型是const类型,所以不能改变对象5,inlineI)在类内定义函数一般是默认的内联函数II)在类里声明,类外定义的函数要在类内与类外显示的注明一、继承与派生1,继承的概念2,继承的分类(单继承与
6、多继承)3,继承的特性单向性、传递性、可重用性4,派生类的定义5,继承的方式(共有继承、保护继承,私有继承)I)注意继承方式对数据访问的限制II)即使子类也不能直接访问父类的私有成员。6,派生类的构造和析构I)构造和析构顺序A)单继承是按照先构造基类在构造子类,析构相反B)多继承构造父类是按照继承顺序而来的C)有对象成员的派生类对象成员在基类之后构造II)派生类数据成员的初始化通常将基类称为基类拷贝,或者基类子对象。A)Student(stringmname,charmsex,intmage,stringmno,floatmscore):n
7、o(mno),score(mscore),Person(mname,msex,mage){//利用基类的构造函数进行初始化cout<<"Student类有参构造函数"<A::m。二、二义性和虚基类1,二义性概述I)同名成员来自于不同的基类在子类中调用该成员的时候
8、会发生编译错误。这时候A::m,B::m来区分II)同名函数来自于同一个基类,这时候B1::m,B2::m来区分2,二义性的解决办法二义性的根源是因为子类有多个基类的拷贝解决的方
此文档下载收益归作者所有