3.构造函数

106 阅读1分钟

inline(内联函数)

  • 函数若在类内完成定义就自动成为inline候选人 编译器有时候也无法将一个复杂函数展开成inline
  • 类外可以加关键字也可以成为inline候选人
image.png

access level(访问级别)

  • 数据在没有特殊情况下一定要封装成private
  • 一般的函数都是public的

public: 可以被任意实体访问

protected: 只允许子类及本类的成员函数访问

private: 只允许本类的成员函数访问

constructor (ctor构造函数)

  • 尽量使用列初始化这样效率会更高(在初始化这一步就完成而不需要进行align(赋值))
class test{
private:
   int x,y;
public:
   test(int l = 0,int r = 0) //这里有默认实参
   : x(l) , y(r)
   {}
};
int main(){
   test test;
}

ctor可以有很多个重载(overloading)

  • 注意不能这样写 编译器会不知道使用哪个构造函数
class test{
private:
   int x,y;
public:
   test(int l = 0,int r = 0)
   : x(l) , y(r)
   {}
   test()
   : x(1) ,y(0)
   {}
};
int main(){
   test test; // error Call to ctor is ambiguous
}