C++网易云课堂开发工程师-class的声明
这节中主要讲解Class的内部声明与定义情况。
1.在类内直接定义的函数
- 在内部定义的函数,默认为inline。
- inline函数,若设定为inline函数使用起来会较快。
- 编译器无法将所有声明为inline的函数定义成为inline,(函数过于复杂)。
2.在类外定义的函数
- 没有在class内定义的函数,可以声明为inline,具体是否为inline,由编译器自己决定。
3.访问级别
- public:大部分函数
- private:数据成员
4.构造函数
- 构造函数的名称和类的名称一定相同。
- 没有返回值类型,本质上是创建对象的。
- 标准写法:complex (double r = 0, double i = 0) : re (r) , im(i) {} (初始化阶段,放入大括号中{}是赋值阶段。)
- 只有在创建对象时调用构造函数。
5.构造函数的重载(overloading)
1.complex() : re (0), im(0) {} 构造函数
2.void real(double r) {re = r} 数据成员赋值(overloading)
机器能够分清楚构造函数是否重载的原因是:
real函数编译后的实际名称可能是:
?real@Complex@@QBEXZ
?real@Complex@@QAENABN@Z
-------------------------------冲突易混淆的部分---------------------------
1.complex(double r = 0, double i = 0) : re (r), im (i) {}
2.complex() : re(0), im(0) {}
由于1.中含有默认值,2.中并不传入任何在数。当使用complex c1;或complex c2时将会发生混淆。