关于Pimpl技术

一般情况下,在设计类时,初学者总是把私有成员变量和函数设成值类型,这样做有三点不妥:

1、增加了编译时间。若“私有成员变量”或“私有成员函数的参数”都是值定义的,那么在编译这个类时需要这些对象的完全定义。而如果这些类型的头文件里又包含了很多其他类(尤其对一个大的项目更是如此),那么编译时间将会相当长;

 

2、使名字查找和匹配产生多义性。在C++中,可视性(visibility)和可访问性(accessibility)是不同的。这主要体现在名字匹配过程中。public、protected和private限制的是可访问性,但不是可视性。事实上在C++中没有什么关键字是指定可视性的,这就是说在编译时所有的代码其实都可以“看见”类中的内容。下面这个例子会更清楚一些:

 

从上面这个例子可以看出,编译器总是先进行名字匹配,此时是忽略可访问性限制的。为了解决这两个问题,我们只能使用::Twice(21)和

c.Twice(string("Hello!"))。

 

3、安全性

此处涉及到很复杂的线程机制,不予详细解释。

 

更多资料请参照http://www.gamedev.net/reference/articles/article1794.asp

http://www.cppblog.com/SpringSnow/articles/80111.html两篇博文。

 

                                                                                   ————引自Sutter C++ Coding Standards

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值