摘要: 为了驳回编译器自动提供的功能, 可将相应的成员函数声明为private并不予实现。如果在成员函数或friend函数调用这些, 连接时会报错。将连接错误移至编译期是可能的,设置一个专门为了防止copying动作的base classs:class Uncopyable{protected: //允许derived对象构造和析构 Uncopyable(){} ~Uncopyable(){}private: //阻止copying Uncopyble(const Uncopyable&); Uncopyable& operator=(const Uncopyable&);}; 阅读全文
posted @ 2012-01-07 23:09 lidan 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 编译给会为一个空类声明一个default构造函数、一个copy构造函数、一个copy assignment操作符、和一个析构函数。所有这些都是public且inline: class Empty{}; 就像是写了这样的代码: class Empty{ Empty(){…} Empty(const Empty& rhs) {…} ~E... 阅读全文
posted @ 2012-01-07 15:36 lidan 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 对象的成员变量的初始化动作发生在进入构造函数本体之前。ABEntry::ABEntry(const std::string& name, const std::list<PhoneNumber>& phones){ theName = name; //这些都是赋值,不是初始化 thePhones = phones; numTimesConsulted = 0;}这个构造函数首先调用default构造函数为theName, thePhones设初值,然后立刻对他们赋予新值ABEntry::ABEntry(const std::string& name, con 阅读全文
posted @ 2012-01-07 10:16 lidan 阅读(539) 评论(0) 推荐(0) 编辑