Effective C++——Study Notes

来源:互联网 发布:vb object转换 编辑:程序博客网 时间:2024/06/06 14:02

1.p3  区分声明declaration和定义definition,定义式是编译器为对象拨发内存的地点。区分定义和初始化,初始化是给予对象初值的过程。默认构造函数要不没有参数,要不所有参数都有缺省值。

2.p5 explicit关键字用来阻止构造函数执行隐式类型转换,但它们仍然可进行显示类型转换。比如int(38.0)

class B{public:explict B(int x=0;bool b=true);~B();}void foo(B bObj);foo(B(28.0)); //correctfoo(28); //wrong,foo接受的是B类型而不是int类型

3. p6 copy constructor以及copy assignment区分赋值操作符与复制构造函数。

class Widget{Widget();Widge(const Widge& rhs);Widget& operator=(const Widget& rhs);~Widge();}Widget w1; //default constructorWidget w2(w1); //copy constructorWidget w3 = w2; //copy constructor 而不是copy assignmentw2=w3;  //copy assignment
如果一个新对象被定义,一定会有个构造函数被调用,不可能调用赋值操作,如果没有新对象被定义,就不会有构造函数被调用,当然就是赋值操作符被调用。

4.STL,标准模板库是C++标准程序库的一部分,致力于容器,迭代器,算法及相关机能。许多相关机能以函数对象(function object)实现,那是“行为像函数”的对象。这样的对象来自于重载operator()(function call操作符)的class。回顾function object是经类实例化的对象,使用类封装函数功能。

5.不明确行为,undefined behavior。比如下面的两个例子。

int *p=0; //p是空指针

std::cout<<*p; //会导致不明确行为

char name[]="Darla"; //name是个数组,大小是6

char c=name[10]; //导致不明确行为

6.C++中的interface是指class的可访问元素或者函数的签名即函数原型。回顾interface inheritance和implementation inheritance,前者指派生类仅仅继承类的接口。


0 0
原创粉丝点击