c++ efective

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 函数以外的其他选择。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值