C++与Java中的构造函数和变量名

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++中执行此操作?

Tim*_*sch 6

是的,您可以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,protectedprivate)应用于每个成员,但您可以将它们分组.

此外,如果您使用上面使用的初始化类型,成员将初始化两次 - 创建对象时使用默认构造函数(基本上,在执行大括号内的代码之前),以及在分配期间第二次使用默认构造函数到this->a.