2016年6月16日

读书笔记_Effective_C++_条款二十一:当必须返回对象时,别妄想返回其reference

摘要: 在栈空间的临时成员变量在函数生命期结束后无法传出 既然栈空间不行,试试堆空间 并不可以,因为你可能会忘记自己new的,即使你没有忘记,但出现((a*b)*c)的情况会使你无法delete 试图以全局变量求得永生,但出现if((a*b)==(c*d))会恒成立 没有办法的时候,pass-by-refe 阅读全文

posted @ 2016-06-16 22:17 Kooing 阅读(148) 评论(0) 推荐(0) 编辑

effective_c++条款20,用pass-by-reference-to-const替换pass-by-value

摘要: pass-by-value 1)导致复制是浪费资源 2)多态是导致对象切割 所以我们使用 上面的话针对class,不针对基本类型,函数对象(重载运算符),stl的迭代器。 基本类型:本来就很小,直接复制。 函数对象:暂时不清楚 stl迭代器:暂时不清楚 阅读全文

posted @ 2016-06-16 21:37 Kooing 阅读(130) 评论(0) 推荐(0) 编辑

2016年6月15日

effectivec++条款18,让接口容易被正确使用,不宜被吴勇

摘要: test* create_test(); shared_ptr create_test();//下面的接口比上面的接口要好 auto_ptr create_test(); { shared_ptr p(new test()); return p; } 阅读全文

posted @ 2016-06-15 21:59 Kooing 阅读(114) 评论(0) 推荐(0) 编辑

struct可以拥有class般的构造函数

摘要: struct A { int a, b; A(int x, int y) :a(x), b(y){} }; int main() { A a(1, 2); cout << a.a << " " << a.b << endl; } 阅读全文

posted @ 2016-06-15 21:13 Kooing 阅读(167) 评论(0) 推荐(0) 编辑

读书笔记_Effective_C++_条款十七:以独立语句将new产生的对象置入智能指针

摘要: int get_int(); void f(shared_ptr a, int); //下面调用 f(new int(3), get_int());//如果是类而不是int就可以会有有explicit,就不能隐式转换 f(shared_ptr a = new int(3), get_int());//还有显式转换 //然而都不是好方法 //从小老师就教导我们不同的编译器,调用参数顺序是不一样的 ... 阅读全文

posted @ 2016-06-15 21:05 Kooing 阅读(195) 评论(0) 推荐(0) 编辑

读书笔记_Effective_C++_条款十五:在资源类管理类中提供对原始资源的访问

摘要: void f(int* a) { cout p(new int(3)); f(p.get());//shared_ptr 是无法隐式转换成int* ,但用.get()就可以把她转换回原始指针 } 阅读全文

posted @ 2016-06-15 20:38 Kooing 阅读(104) 评论(0) 推荐(0) 编辑

effective条款15,在资源管理类中小心copying行为

摘要: 结果 a,b两个对象,根据后构造的先析构。b析构了,然后a又析构,就会导致程序崩溃 下面放出两大办法: 1)禁止复制(copy构造函数和operator=放进private) 2)使用shared_prt类的有计数功能的指针 ...........后面搞不下去,待定 阅读全文

posted @ 2016-06-15 17:03 Kooing 阅读(135) 评论(0) 推荐(0) 编辑

const的重载

摘要: 补充回一句容易混淆的话: 普通对象可以使用常函数 当有const重载的情况下,优先使用普通函数版本 常数对象只能使用常函数 阅读全文

posted @ 2016-06-15 16:01 Kooing 阅读(188) 评论(0) 推荐(0) 编辑

explicit 只对构造函数起作用,用来抑制隐式转换。

摘要: class A { private: int a; public: A(int x) :a(x){} void display(){ cout << a << endl; } void display()const{ cout << "ddd" << endl; } }; void f(A a)//因为下面数据是常量,不能用&;因为用const就不能使用display { a.dis... 阅读全文

posted @ 2016-06-15 15:19 Kooing 阅读(176) 评论(0) 推荐(0) 编辑

2016年6月14日

初次窥见智能指针auto_ptr和shared_ptr

摘要: #include //shared_ptr要用的头文件 using namespace std; class A //测试auto_ptr和shared_ptr的delete能力 { public: A(){ cout p1 = a;//并不能这样初始化 auto_ptr p1(new int(3)); auto_ptr p2(new A); cout p3(p1);//... 阅读全文

posted @ 2016-06-14 20:10 Kooing 阅读(173) 评论(0) 推荐(0) 编辑

导航