技术(条款25-31)

More Effective C++这本书1996年写的,这部分的“技术”,是从1996年的视角写的一些遍程技巧,以当前的视角来看,都太普通了。像条款28中说的智能指针,已经是C++标准的一部分了,如果比较了解的人,无需读这些条款。学习C++的一些新的性能更有意义。

条款25:将constructor和non-member functions虚化

使用一些技巧,让构造和非成员函数展现出虚函数的效果。感觉这些技术会自然的想到。

参考书本,写了个operator <<的虚化实现

class A{

virtual ostream& print(ostream& s) const=0;

};

class B:public A{

virtual ostream& print(ostream& s) const;

};

inline ostream* operator<<(ostream& s, const A& c){

return c.print(s);

}

条款26:限制某个class所能产生的对象数量

如果只能产生一个对象的化,就是单例模式。具体细节(构造函数私有,禁止继承等)不说了,只是作者推荐懒汉模式,我反而觉得饿汉好,因为人都很懒,我看到很多人写的懒汉单例都不是线程安全的。既然全局只有一个对象,消耗资源有限,使用更安全的模式何乐而不为呢!

条款27:要求或禁止对象产生于heap中

要求产生于heap:把析构设为private或者protect(构造设为private比骄麻烦,还要考虑拷贝构造、赋值构造等因素),写一个destroy函数自杀。这样该类对象只能通过new创建,并禁止delete,只能手动调用destroy函数释放资源。

禁止产生于heap:将operator new、operator delete、operator new[]、operator delete[]声明成private。但是如果该类被继承或者作为其他类的成员变量,则前面的办法无法禁止。

条款28:Smart Pointers(智能指针)

条款29:Reference counting(引用计数)

上面2款是没必要看的,因为还停留在auto_ptr阶段,引用计数就是讨论shared_ptr。有兴趣可以看看。

条款30:Proxy classes(替身类,代理类)

Proxy是一种设计模式,GOF1995年就出版的设计模式就有详细解释Proxy模式。

条款31:让函数根据一个以上的对象类型来决定如何虚化

看了一遍,恕我笨,不知道这个能干啥。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值