【发布时间】:2020-09-08 12:42:24
【问题描述】:
class A{
private : string a[3];
public : A();
void ShowA();
}
A::A(){ string a[3] = {"aa","bb","cc"} }
void A::ShowA(){
for(int x=0;x<=2;x++){
cout<< a[x];
}
}
int main(){
A a;
a.ShowA();
return 0;
}
在这段代码中,我认为输出是 aabbcc 但什么都没有。只是空白存在。 你能告诉我它为什么会发生以及如何解决它。 伙计们干杯。
【问题讨论】:
-
string a[3]在您的构造函数中创建一个新的局部变量(与同名的成员变量完全无关),该变量会立即被丢弃。有关更现代的方法,请参阅 Initializing a member array in constructor initializer 或 C++ Initializing Non-Static Member Array。 -
您正在隐藏自己对
a的定义,并分配给后来被丢弃的局部变量。 -
您有一个名为
a的成员,并且在构造函数中您有一个位于构造函数本地的a。阅读范围(和std::array和成员初始化) -
考虑在这里使用
std::vector。