我正在学习来自Java背景的C++(很多年前就知道一点C)...

在Java中,通常的做法是在构造函数中使用“this”来区分作为参数传递给构造函数的变量与在类中声明的变量:

class Blabla {

    private int a;
    private int b;

    Blabla(int a, int b){
        this.a = a;
        this.b = b;
    }
}

我喜欢这样,因为变量Blabla.a和作为构造函数的参数传入的变量表示同一件事,因此,使它们具有相同的名称是合乎逻辑的……

是否可以在C++中做到这一点?

最佳答案

是的,您可以使用this引用成员变量。也就是说,您经常会发现在惯用的C++中,您的代码如下所示:

class Blabla {
  private:
    int a_;
    int b_;

  public:
    Blabla(int a, int b) : a_(a), b_(b) {}
};

如您所见,通常不会将访问控制说明符(publicprotectedprivate)应用于每个成员,而是将它们按部分分组。

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

关于c++ - C++与Java的构造函数和变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1875695/

10-11 23:04
查看更多