我希望我的问题很清楚...... 如果我们有
Class A
{
public:
A(); //default constructor
A(int new_a, string new_b);
private:
int a;string b;
};
(很抱歉,我是堆叠溢出的新手,我的格式可能很糟糕。)
Aren&#t; t" new_a"和" new_b"在私人部分中表示a和b的东西? 为什么我们不同的名字给他们..?
感谢您的回答!
答案 0 :(得分:3)
您可以按以下方式声明构造函数
Class A
{
public:
A(); //default constructor
A( int a, string b);
private:
int a;string b;
};
根据C ++标准
在函数声明中,或在除。之外的任何函数声明符中 函数定义的声明者(8.4),参数名称(如果 供应)具有功能原型范围,最终终止 最近的封闭函数声明符
因此,成员函数参数可以与该类的私有数据成员具有相同的名称。 您还可以通过以下方式定义构造函数
A::A( int a, string b) : a( a ), b( b ) {}
或
A::A( int a, string b){ A::a = a; A::b = b; }
或
A::A( int a, string b){ this->a = a; this->b = b; }
答案 1 :(得分:0)
它们可以具有相同的名称。但是当你这样做时,你必须在构造函数体内使用相同名称的参数消除歧义。