Mixture

身未动,心已远

导航

2014年4月3日 #

effective c++ 6: Explicitly disallow the use of compiler-generated functions you do not want

摘要: 假如有个类,我不想让这个类的对象产生副本,即不想让它支持copy构造函数以及copy assignment操作符。那么比较好的办法是把这两个函数声明为private并且不定义。这样即使member或者friend函数想用着两个函数也会发生连接错误。把这个错误提到编译器的一个好办法是专门设计一个Uncopyable类,然后来继承这个Uncopyable类,这样无论任何形式对这两个函数的调用都会在编译期报错了。class Uncopyable {protected: Uncopyable() {} ~Uncopyable() {}private: Uncopyable(const... 阅读全文

posted @ 2014-04-03 18:29 parapax 阅读(148) 评论(0) 推荐(0) 编辑

effective c++ 5: Know what functions C++ silently writes and calls

摘要: 编译器会自动为一个类声明一个copy构造函数,一个copy assignment操作符和一个析构函数(如果没有自己声明这些函数的话)。如果没有声明任何构造函数,c++也会声明一个default构造函数。当这些函数需要被调用的时候,才会被创建。default构造函数和析构函数中一般是调用base classes和non-static成员变量的构造函数。编译器自动产生的析构函数为non-virtual,除非这个class的base class自身声明有virtual析构函数。copy构造函数和copy assignment操作符只是将来源对象的每个non-static成员变量拷到目标对象里。但是假 阅读全文

posted @ 2014-04-03 18:20 parapax 阅读(150) 评论(0) 推荐(0) 编辑