我开始阅读一本书,在某些时候我来到class
,在我创建了我的第一个类并在main
中创建了一个对象之后,我决定在同一个类上再创建两个Object 。该程序工作正常,但输出似乎与我的理解不同。
以下是代码:
#include <iostream>
using namespace std;
class Data{
public:
Data( string z ){
cout << z << endl;
}
void setName ( string x ){
name = x;
}
string getName( void ){
return name;
}
private:
string name;
};
int main ( void ){
Data obj1( "Hello" );
Data obj2( "World" );
Data obj3( "!" );
cout << obj3.getName() << endl;
cout << obj2.getName() << endl;
cout << obj1.getName() << endl;
}
这是输出:
Hello
World
!
但我认为它会打印出来:
!
World
Hello
为什么会这样?
答案 0 :(得分:7)
输出是在构造函数中创建的,但您从不设置对象的名称。这就是为什么输出顺序以您创建对象的顺序出现的原因。
我想你打算这样做:
class Data{
public:
Data( string z ){
name = z;
}
void setName ( string x ){
name = x;
}
string getName( void ){
return name;
}
private:
string name;
};