C++ Primer 5e chapter 7
2015-08-20 20:45
141 查看
1、数据抽象和封装是类的基本思想,数据抽象依赖于接口和实现分离的技术。 接口即类的public函数成员和数据成员,实现即类的私有数据和函数;
2、const成员函数,常量对象,常量对象的引用或者指针都只能调用常量成员函数;
3、类在编译的时候先编译成员的声明,在编译成员函数的定义;
4、类的非成员函数,尽管它们的操作属于接口的组成部分,但是实际上不属于类本身,通常声明在类的头文件中;
5、IO类无法拷贝,所以一般使用引用传递方式;
6、一旦定义了构造函数,就要写一个默认构造函数;
7、C++11,类中含有数组和指针的时候,容易出现错误,最好自己写构造函数; A() = default ;默认构造函数;
8、A(参数列表int a , string b, double c): xx(a), yy(b), zz(c) { } 构造函数初始值列表;
9、拷贝、赋值、析构函数:尽量自己写这些函数,尤其是使用了动态资源的时候,浅拷贝行不通,需要自己写深拷贝;
10、非成员函数如何访问类的成员数据,答案是友元函数;需要生命两次,一次 声明友元函数在类中,friend + 函数声明;一次在头文件中,不需要friend;
11、inline成员函数的定义最好在头文件中,显示定义在类中就不需要inline关键字了;
12、const成员函数中要修改类的数据成员,使用mutable;
13、常量成员函数和非常量成员函数,混用的时候,将内部封装成一个小函数,供两个重载的接口调用,是一种常见的策略,P248;
14、前向声明,A中含B,B中含A,一般可以使用前向声明,不过更一般的情况是使用类C完成解耦;
15、类不能含有自己的对象,但是可以含有指向自己的指针;
16、类的友元类,A负责管理自己的友元,在自己类的声明中声明 friend class B;则B可以访问A的所有成员;
17、其他类的函数作为这个类的友元函数,与上面类似,在自己类的声明中 friend void B::函数名();
18、构造函数,初始化类中的引用,const数据时,务必在列表中初始化,不可以在函数体中初始化;
19、初始化的顺序是按照在类内定义的顺序,而不是构造函数中写的顺序;
20、默认构造函数不一定没有形参,也可以给出默认形参;
21、C++11,委托构造函数,将这个构造函数的构造工作委托给其他构造函数;
22、转换构造函数,接受一个实参的构造函数,定义了该实参向此类隐式转换的法则,只能进行一步类型转换;
23、可以自己选择禁止隐式类型转换,explicit关键字,在构造函数之前加上这个关键字,禁止隐式转换;仅在类内声明时使用,类外定义时不需要;
24、explicit关键字禁止了隐式转换,还是可以显式转换,或者使用static_cast进行转换;
25、聚合类的定义,所有成员public,没有定义任何构造函数,没有类内初始值,没有基类,没有virtual函数;
26、字面值常量类;
27、static成员,可以用类访问,也可以用对象来访问,仅在内部声明时使用static,定义时不需要;不是由构造函数初始化的,所以务必在类的外部定义和初始化每个静态成员,但是常量成员可以在类内初始化,即使是这样,类外还是要重新定义一次这个静态变量;
28、封装:private部分即为封装;
29、接口:类提供的public部分,不包括数据成员;
30、实现:私有成员;
31、类的静态成员函数不能访问非静态数据成员,类的非静态成员函数可以使用静态数据成员;
2、const成员函数,常量对象,常量对象的引用或者指针都只能调用常量成员函数;
3、类在编译的时候先编译成员的声明,在编译成员函数的定义;
4、类的非成员函数,尽管它们的操作属于接口的组成部分,但是实际上不属于类本身,通常声明在类的头文件中;
5、IO类无法拷贝,所以一般使用引用传递方式;
6、一旦定义了构造函数,就要写一个默认构造函数;
7、C++11,类中含有数组和指针的时候,容易出现错误,最好自己写构造函数; A() = default ;默认构造函数;
8、A(参数列表int a , string b, double c): xx(a), yy(b), zz(c) { } 构造函数初始值列表;
9、拷贝、赋值、析构函数:尽量自己写这些函数,尤其是使用了动态资源的时候,浅拷贝行不通,需要自己写深拷贝;
10、非成员函数如何访问类的成员数据,答案是友元函数;需要生命两次,一次 声明友元函数在类中,friend + 函数声明;一次在头文件中,不需要friend;
11、inline成员函数的定义最好在头文件中,显示定义在类中就不需要inline关键字了;
12、const成员函数中要修改类的数据成员,使用mutable;
13、常量成员函数和非常量成员函数,混用的时候,将内部封装成一个小函数,供两个重载的接口调用,是一种常见的策略,P248;
14、前向声明,A中含B,B中含A,一般可以使用前向声明,不过更一般的情况是使用类C完成解耦;
15、类不能含有自己的对象,但是可以含有指向自己的指针;
16、类的友元类,A负责管理自己的友元,在自己类的声明中声明 friend class B;则B可以访问A的所有成员;
17、其他类的函数作为这个类的友元函数,与上面类似,在自己类的声明中 friend void B::函数名();
18、构造函数,初始化类中的引用,const数据时,务必在列表中初始化,不可以在函数体中初始化;
19、初始化的顺序是按照在类内定义的顺序,而不是构造函数中写的顺序;
20、默认构造函数不一定没有形参,也可以给出默认形参;
21、C++11,委托构造函数,将这个构造函数的构造工作委托给其他构造函数;
22、转换构造函数,接受一个实参的构造函数,定义了该实参向此类隐式转换的法则,只能进行一步类型转换;
23、可以自己选择禁止隐式类型转换,explicit关键字,在构造函数之前加上这个关键字,禁止隐式转换;仅在类内声明时使用,类外定义时不需要;
24、explicit关键字禁止了隐式转换,还是可以显式转换,或者使用static_cast进行转换;
25、聚合类的定义,所有成员public,没有定义任何构造函数,没有类内初始值,没有基类,没有virtual函数;
26、字面值常量类;
27、static成员,可以用类访问,也可以用对象来访问,仅在内部声明时使用static,定义时不需要;不是由构造函数初始化的,所以务必在类的外部定义和初始化每个静态成员,但是常量成员可以在类内初始化,即使是这样,类外还是要重新定义一次这个静态变量;
28、封装:private部分即为封装;
29、接口:类提供的public部分,不包括数据成员;
30、实现:私有成员;
31、类的静态成员函数不能访问非静态数据成员,类的非静态成员函数可以使用静态数据成员;
相关文章推荐
- Python实例浅谈之三Python与C/C++相互调用
- 用C语言编程求水仙花数
- Kuhn_Munkres最大权匹配算法C++模板
- C++知识点随笔(五):虚继承
- 用C语言编程实现大小写字母的转换
- C语言动态走迷宫
- 用C语言求N!
- 用C语言编程求三角形的面积
- 用C语言求一元二次方程的根
- 用C语言编程求青蛙王子问题
- C语言编程判断一个数是否为素数
- C语言编程求最小公倍数
- C++ 实现memcpy和strcpy
- 黑马程序员——ios基础---C语言:结构体、条件编译、文件操作
- C语言编程求“有多少个一?”
- C++ 头文件
- C语言编程求两点之间的距离
- escplise 下新添加c++代码的处理
- 用C语言编程求三角形的另一边
- C++RTTI强制转型