还是些经验

 1.关于几个地址

0xCCCCCCCC在栈上分配,但没有初始化 

0xCDCDCDCD 在堆区分配,但没有初始化


0xDDDDDDDD  使用在堆上已经释放的内存

2.std::cout的重定位

std::ofstream out("cout.txt");


std::streambuf *oldbuf = std::cout.rdbuf(out.rdbuf());

3类型转化

在(effient in c++)中分俩类,一类是承袭c语言函数形式的如:

int a ;

(float)a ; float(a)

一类是c++中的类型转化

const_cast,static_cast,dynatic_cast,reiterpret_cast

在c++中建议用上面四种转化,但dynatic要慎用,它的开销太大了,将父类转化为子类时候,在知道子类类型的情况下,用static_cast替换dynatic是有效的

4,构造函数

(effient in c++)中建议构造函数这么写:

class a

{

int  aa ;

public

       a(int b):aa(b){}
};

这样的构造函数一它是inline的,二它省掉了一个赋值操作,但inline可以会导致代码膨胀,我们知道一旦a类构造函数会调用它父类的构造函数,也会调用它的member的构造函数,这样可能导致构造函数代码膨胀导致换页

5异常安全函数

异常安全函数应该提供的保证:

基本保证:让异常前的状态保持某中特定的状态

强制保证:一旦有异常抛出,状态恢复到以前的状态

异常不抛出保证

异常安全函数一般要求达到强制保证,这个可以用copy and swap实现:

肚子饿了,吃饭去了,以后写

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值