我正在学习来自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) {}
};
如您所见,通常不会将访问控制说明符(
public
,protected
或private
)应用于每个成员,而是将它们按部分分组。此外,如果使用上面使用的初始化类型,则成员将初始化两次-一次在创建对象时使用默认构造函数(基本上在执行大括号内的代码之前),而第二次在分配期间到
this->a
。关于c++ - C++与Java的构造函数和变量名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1875695/