dm7*_*m76 2 c++ constructor this
我正在学习来自Java背景的C++(多年前知道一点C)......
在Java中,通常的做法是在构造函数中使用"this"来区分作为构造函数的参数传入的变量和类中声明的变量:
class Blabla {
private int a;
private int b;
Blabla(int a, int b){
this.a = a;
this.b = b;
}
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,因为变量Blabla.a和作为构造函数的参数传递的变量表示同样的事情,所以它们应该具有相同的名称是合乎逻辑的......
是否可以在C++中执行此操作?
是的,您可以this用来引用成员变量.也就是说,您经常会发现您的代码在惯用的C++中看起来如下:
class Blabla {
private:
int a_;
int b_;
public:
Blabla(int a, int b) : a_(a), b_(b) {}
};
Run Code Online (Sandbox Code Playgroud)
如您所见,您通常不会将访问控制说明符(public,protected或private)应用于每个成员,但您可以将它们分组.
此外,如果您使用上面使用的初始化类型,成员将初始化两次 - 创建对象时使用默认构造函数(基本上,在执行大括号内的代码之前),以及在分配期间第二次使用默认构造函数到this->a.