C++实用教程笔记.doc

上传人:ni****g 文档编号:550374192 上传时间:2023-09-21 格式:DOC 页数:10 大小:124.51KB
返回 下载 相关 举报
C++实用教程笔记.doc_第1页
第1页 / 共10页
C++实用教程笔记.doc_第2页
第2页 / 共10页
C++实用教程笔记.doc_第3页
第3页 / 共10页
C++实用教程笔记.doc_第4页
第4页 / 共10页
C++实用教程笔记.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《C++实用教程笔记.doc》由会员分享,可在线阅读,更多相关《C++实用教程笔记.doc(10页珍藏版)》请在金锄头文库上搜索。

1、一、 文件重复包含处理: 方法一: #ifndef A_H #define A_H int a; #endif 方法二: #pragma once (绝大多数编译器支持)二、 访问权限的问题 1,类外只能访问public 2,在类内对象不受访问权限的限制三、 构造函数与析构函数1,结构体中的初始化因为成员变量都是public所以可以直接初始化 Person one = qqqq,23,45;2,在类中这样如果成员是public也是可以的,但是这样却降低了类的封装性。3,构造函数 1)默认构造函数(可以带参数) I)初始化一般要用对象成员初始化列表 2)带参数的构造函数 3)默认拷贝构造函数 I

2、)默认拷贝构造函数编译器会自动生成但是很多时候是不够用的(浅拷贝) II)自己要重载默认拷贝函数 4)默认拷贝函数的调用情况(两种情况都会构造临时的对象) I)对象作为函数的参数 II)对象作为函数的返回值 III)初始化新对象的时候 4,构造的顺序 首先构造类成员变量,然后是构造自己。 析构的顺序正好相反。、四、 const对象Const 对象必须初始化,而且之后不能被更改。五、 数据共享与成员特性1,静态成员 1)静态数据成员 I)静态数据成员定义: 在类内声明:static int nnum; 在类外定义与分配空间:int 类名:nnum = 0; II)静态成员的引用 可以通过对象引用

3、 可以同过类名直接引用 2)静态成员函数 I)静态成员函数的定义: 在类用定义 static void ChangeData() II)静态静态成员函数的引用: 可以通过对象引用 可以同过类名直接引用 III)静态成员函数的注意点: 静态成员函数只可以访问静态成员 注意类中的静态成员与普通静态变量和静态函数的区别。六、 友元1,友元函数 I)友元外部函数 Friend Cpoint inflate(Cpoint&pt,int a) 类外定义不要加类作用域 II) 友元成员函数 这个函数是另外一个类的成员函数 Friend Cpoint Cpoint:inflate(Cpoint&pt,int

4、a) 一定要加上它属于哪一个类2,友元类 Friend class A; 友元类中的每一个函数都是类的友元成员函数3,注意点 友元只能通过类的对象可以直接访问类的私有成员 友元不是该类的成员七、 类成员的其他特性1,const 成员 I)const数据成员 初始化后不能改变 II)const 成员函数 A)在参数列表后面加上const关键字 B)不能修改任何数据成员 C)不能调用非const成员函数(非const成员函数会修改数据成员) D)只有常成员函数在有资格被常对象调用 E)const 关键字可以区分重载函数 Void print(); Void print()const; 是合法的重载

5、。2,mutable成员 当数据成员用mutab关键字修饰后,那数据成员就可以在const函数中被修改3,explicit 成员 用explicit关键字修饰类的构造函数可以强制调用显示的构造函数。4,this指针 I)this指针在static成员函数中指向不明确,所以不能在其中使用 II)this指针在const函数中的类型是const类型,所以不能改变对象5,inline I)在类内定义函数一般是默认的内联函数 II)在类里声明,类外定义的函数要在类内与类外显示的注明八、 继承与派生1,继承的概念2,继承的分类(单继承与多继承)3,继承的特性 单向性、传递性、可重用性4,派生类的定义5,

6、继承的方式(共有继承、保护继承,私有继承) I)注意继承方式对数据访问的限制 II)即使子类也不能直接访问父类的私有成员。6,派生类的构造和析构 I)构造和析构顺序 A)单继承是按照先构造基类在构造子类,析构相反 B)多继承构造父类是按照继承顺序而来的 C)有对象成员的派生类对象成员在基类之后构造 II)派生类数据成员的初始化 通常将基类称为基类拷贝,或者基类子对象。 A)Student(string mname,char msex,int mage,string mno,float mscore) :no(mno),score(mscore),Person(mname,msex,mage)

7、/利用基类的构造函数进行初始化 cout Student类有参构造函数A:m。九、 二义性和虚基类 1,二义性概述 I)同名成员来自于不同的基类在子类中调用该成员的时候会发生编译错 误。这时候A:m,B:m来区分 II)同名函数来自于同一个基类,这时候B1:m,B2:m来区分 2,二义性的解决办法 二义性的根源是因为子类有多个基类的拷贝 解决的方法是虚基类与虚继承 此时B1和B2的构造不会去构造A,也就是说C类直接继承了A,这时可以在C中直接初始化A,C中只有一个A的副本十、 兼容 一个派生类对象可以赋给基类对象。十一、 类间关系 1,继承关系 2,组合关系 3,共享关系(通过静态函数和友元函

8、数十二、 多态 1,多态的分类 I)编译时的多态(通过函数的重载和运算符的重载实现) 静态联编 II)运行时的多态(通过继承和虚函数实现的) 动态联编 A)虚函数数不能是友元和静态的成员函数 B)析构函数可以是虚函数,构造函数则不行 C)虚函数派生下去仍然是虚函数,可以省略virtual D)返回类型一定要和基类的虚函数相同(这和一般的函数重载是不同的 ) III)虚析构函数 A)通过定义虚函数可以通过基类的指针或者是引用来调用 子类的析构函数 B)在visual C+MFC中基类用来搭建程序的框架,派生类是用户的代 码,通过虚函数来达到运行用户代码的目的。 2,纯虚函数和抽象类 I)纯虚函数

9、 Virtual float area()=0; 基类不知道函数的具体实现,必须让子类去实现 II)抽象类 至少包含一个纯虚函数的类 不能定义对象,但可以定义指针指向派生类。十三、 运算符重载 运算符重载属于静态联编的多态。它是通过运算符重载函数实现的。通常是类的 成员函数和友元函数。下面是一个简单的例子。#include using namespace std;class CComplexpublic:CComplex(double r = 0, double i = 0):real(r),image(i) cout 默认构造函数endl;CComplex(CComplex & c) cou

10、t 拷贝构造函数endl;real = c.real;image = c.image;void print()cout REAL:real ,IMAGE:imageendl; CComplex operator + (CComplex & c);CComplex operator + (double r); private:double real;double image;CComplex CComplex:operator +(CComplex &c) cout 重载运算符函数endl;CComplex tem;tem.real = real + c.real;tem.image = image + c.image;return tem;CComplex CComplex:operator +(double r)CComplex tem;tem.real = real + r;/tem.image = image + c.image;return tem;int main() CComplex c1(10,10),c2(20,20)

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号