您的位置:首页 > 编程语言 > C语言/C++

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、类的静态成员函数不能访问非静态数据成员,类的非静态成员函数可以使用静态数据成员;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: