copy构造函数被用来:“以同型对象初始化自我对象“
copy assignment操作符被用来"从另一个同型对象中拷贝其值到自我对象"
如果一个新对象被定义,一定会有和构造函数被调用,不可能调用复制操作。
如果没有新对象被定义,就不会有构造函数被调用,那么当然是赋值操作被调用。
非成员函数
成员函数
const 对于指针。面对指针,可以指出指针自身,指针所指物,或者两者都是const.
char greeting []="hello";
char *p=greeting;//non-const pointer,non-const data;
const char* p=greeting;//non-const pointer,const data'
char *const p=greeting;//const pointer,non-const data;
const char * const p=greeting;//const pointer,const data;
如果关键字字const 出现在星号左边,表示被指物是常量,如果出现在星号右边,表示指针自身是常量,如果
出现在星号两边,表示被指物和指针两者都是常量。
const 成员函数
:它们使class接口比较容易被理解。这是因为,得知哪个函数可以改动对象内容,而哪个函数不行。
第二,他们是“操作const 对象”成为可能。
两个函数只是常量性不同,可以被重载。
条款4 确定对象被使用前已先被初始化
永远在使用对象之前初先将它初始化
别混淆初始化和赋值操作
对象成员的初始化动作发生在进入构造函数本体之前
base classes更早与其derived classes被初始化。而class的成员变量总是以其声明次序被初始化
为多态基类声明virtual析构函数
给baseclass一个virtual析构函数。
条款13:以对象管理资源
条款14:在资源管理类中小心coping行为
条款15:在资源管理类中提供对原始资源的访问
条款16:成对使用new和delete时要采取相同形式
在new表达中使用[],必须在相应的delete表达式中使用[].
条款17:以独立语句将newed对象置入智能指针
条款18:让接口容易被正确使用,不易被误用
条款19:设计class犹如设计type
条款20:宁以pass_by_reference-to-const 替换pass-by-value
不受切割slice
条款21:必须返回对象时,别妄想返回其reference
条款22:将成员变量声明为private
条款23:宁以non-number,non-friend替换member函数
条款24:若所有参数皆须类型转换,请为此采用non-member函数
参数列表会自动进行隐转换
条款25:考虑写出一个不抛异常的swap函数:不懂
26: 尽可能的延后变量定义的出现时间
27:尽量少做转型
28 避免返回handles指向对象内部成员
29:
30:透彻理解inline的里里外外
对此函数的每一个调用都以函数本体替换之
31 :将文件间的编译依存关系降到最低
32: 确定你的public继承出is-a关系
33:避免遮掩继承而来的名称
35: 考虑virtual 函数以外的其他选择。
copy assignment操作符被用来"从另一个同型对象中拷贝其值到自我对象"
如果一个新对象被定义,一定会有和构造函数被调用,不可能调用复制操作。
如果没有新对象被定义,就不会有构造函数被调用,那么当然是赋值操作被调用。
非成员函数
成员函数
const 对于指针。面对指针,可以指出指针自身,指针所指物,或者两者都是const.
char greeting []="hello";
char *p=greeting;//non-const pointer,non-const data;
const char* p=greeting;//non-const pointer,const data'
char *const p=greeting;//const pointer,non-const data;
const char * const p=greeting;//const pointer,const data;
如果关键字字const 出现在星号左边,表示被指物是常量,如果出现在星号右边,表示指针自身是常量,如果
出现在星号两边,表示被指物和指针两者都是常量。
const 成员函数
:它们使class接口比较容易被理解。这是因为,得知哪个函数可以改动对象内容,而哪个函数不行。
第二,他们是“操作const 对象”成为可能。
两个函数只是常量性不同,可以被重载。
条款4 确定对象被使用前已先被初始化
永远在使用对象之前初先将它初始化
别混淆初始化和赋值操作
对象成员的初始化动作发生在进入构造函数本体之前
base classes更早与其derived classes被初始化。而class的成员变量总是以其声明次序被初始化
为多态基类声明virtual析构函数
给baseclass一个virtual析构函数。
条款13:以对象管理资源
条款14:在资源管理类中小心coping行为
条款15:在资源管理类中提供对原始资源的访问
条款16:成对使用new和delete时要采取相同形式
在new表达中使用[],必须在相应的delete表达式中使用[].
条款17:以独立语句将newed对象置入智能指针
条款18:让接口容易被正确使用,不易被误用
条款19:设计class犹如设计type
条款20:宁以pass_by_reference-to-const 替换pass-by-value
不受切割slice
条款21:必须返回对象时,别妄想返回其reference
条款22:将成员变量声明为private
条款23:宁以non-number,non-friend替换member函数
条款24:若所有参数皆须类型转换,请为此采用non-member函数
参数列表会自动进行隐转换
条款25:考虑写出一个不抛异常的swap函数:不懂
26: 尽可能的延后变量定义的出现时间
27:尽量少做转型
28 避免返回handles指向对象内部成员
29:
30:透彻理解inline的里里外外
对此函数的每一个调用都以函数本体替换之
31 :将文件间的编译依存关系降到最低
32: 确定你的public继承出is-a关系
33:避免遮掩继承而来的名称
35: 考虑virtual 函数以外的其他选择。