#include <iostream>
#include <cstring>
using namespace std;
class foo {
int number;
char string[20];
public:
foo( ) {
set(3, 5);
}
void set (int a, int b) {
number = a + b;
strcpy( string, "summer" );
}
foo (const foo & c ) {
}
void output() {
cout << number << ',' << string << endl;
}
};
void showyanothing (foo);
int main() {
foo a, b;
showyanothing( a );
a.output();
b.output();
}
void showyanothing (foo z) {
cout << "... how are you?\n";
z.output();
}
出力
... hello ...
... how are you?
-1218897013,l·ôl·Y·ôl·À
8,summer
8,summer
の行は-1218897013,l·ôl·Y·ôl·À
、コピーコンストラクターによって作成されたオブジェクトZの値です。コピーコンストラクターを次のように変更すると、オブジェクトzを出力すると。が生成され10, summer.1.2.3
ます。なんで?値はどこから魔法のようにZに挿入されましたか?
新しいコピーコンストラクタ
foo (const foo & c ) {
number = c.number + 2;
strcpy( string, c.string );
strcat( string, ".1.2.3" );
}
新しい出力:
... how are you?
10,summer.1.2.3
8,summer
8,summer
コピーコンストラクターで私が混乱しているのは、c.numberが8に等しく、c.stringが夏に等しいのはなぜですか?それらの値はどこから取得したのですか?