#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 将 yield 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等于夏天?它是从哪里得到这些值的?