我想知道爲什麼下面的代碼是這樣工作的:我在一個類中有char*
成員字段。當我創建此類的一個對象,然後創建第二個對象,然後將第二個對象分配給第一個對象時,第一個對象中類成員的更改應影響第二個對象中的更改。爲什麼價值觀不同?C++ char *作爲類成員
class A{
public:
char* word;
int* number;
A(){
word = new char[100];
number = new int;
}
};
int main()
{
char* a = "lala";
char* b = "baba";
A a1;
a1.word = a;
*(a1.number) = 23;
A a2;
a2 = a1; //After that pointers should point to the same address, because a2.word = a1.word
a2.word = b;
*(a2.number) = 10;
cout << a1.word << endl << a2.word << endl;
cout << *(a1.number) << endl << *(a2.number) << endl;
return 0;
}
指針的理論認爲結果應該是:
Sample2
Sample2
10
10
但結果是:
Sample1
Sample2
10
10
對於int*
作爲類成員的行爲就像是理論提示。
你沒有使用'a1'和'a2'的指針 - 'a2 = a1;'創建'a1'的副本並將它指定給'a2',它們不指向同一個對象 – UnholySheep
Any不使用字符串的好理由? – AntoineB
將成員變量設爲公共也不是一個好主意。用getters和setter代替 –