
Effective C++
文章平均质量分 67
海豚的豚
做好每天的一点点小事
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
将智能指针作为函数输入参数的两个问题
1.考虑这样的processWidget函数声明: void processWidget(shared_ptr pw, int priority);当我们采取这样的方式调用: processWidget(new Widget, priority());显然是不能编译通过的,因为shared_ptr不接受通过new指针隐式的构造(explicit) 所以这样写就能通过编译: processW原创 2018-01-11 10:51:58 · 12821 阅读 · 1 评论 -
《Effective C++ 》条款10:令operator=返回一个reference to *this
令operator=返回一个reference to *this.以实现连锁赋值(右结合形式的连锁赋值,不返回reference也可以实现,但每次赋值之后函数返回的时候,会额外调用拷贝构造来创建一个临时的对象) class Int { public: Int() : value(0){} Int(int i) : value(i) {} Int(const Int原创 2018-01-03 13:55:59 · 190 阅读 · 0 评论 -
《Effective C++》条款21:必须返回对象时,别妄想返回其reference; 24:若所有参数皆需类型转换,请为此采用non-member函数
实现一个有理数类: class Rational { //friend const Rational operator* (const Rational& lhs, const Rational&rhs); //friend bool operator== (const Rational& lhs, const Rational&rhs); public: Rational(int原创 2018-01-12 14:23:23 · 222 阅读 · 0 评论 -
《Effective C++》条款12:复制对象是勿忘其每一个成分
对于拷贝构造函数和拷贝赋值函数,如果决定自己定义,那么不要忘记调用父类的相应构造函数。因为如果没有调用,对于拷贝构造函数,编译器会去自动调用父类的default构造函数,那么父类的成员没有被成功从子类实例拷贝;对于拷贝赋值函数,编译器不会做额外的操作,意味着只有子类的部分被赋值,而父类的成员维持原状。 如下代码子类中的拷贝构造函数和拷贝赋值函数,没有主动调用父类的相应函数: class Bas原创 2018-01-03 16:14:05 · 206 阅读 · 0 评论