C++ 为什么可以';我不能为类实例设置成员值吗?

C++ 为什么可以';我不能为类实例设置成员值吗?,c++,C++,我对这个问题的输出结果感到困惑: 我10岁了。我的名字是 为什么“我的名字是”后面有空白字符串 #包括 使用名称空间std; 类名{ int名字; int姓氏; 公众: void集合名(int f,int l){ first_name=f; 姓氏=l; } int true_name(){ 名+姓; } }; 类波斯{ 公众: 智力年龄; 姓名; 波斯(){ } 公众: void你好(void){ 这里有一些问题 int true_name(){ first_name + last_na

我对这个问题的输出结果感到困惑:

我10岁了。我的名字是

为什么“我的名字是”后面有空白字符串

#包括
使用名称空间std;
类名{
int名字;
int姓氏;
公众:
void集合名(int f,int l){
first_name=f;
姓氏=l;
}
int true_name(){
名+姓;
}
};
类波斯{
公众:
智力年龄;
姓名;
波斯(){
}
公众:
void你好(void){

这里有一些问题

int true_name(){
    first_name + last_name;
}
意思是“添加first_name和last_name,丢弃结果(因为您既没有返回结果,也没有将其分配给变量),然后返回一些随机结果(最近发生的任何事情都可能在相应的CPU寄存器中)。”

编译器应该向您发出警告消息来解释这一点。例如,GCC会发出以下警告:

warning: statement has no effect
warning: control reaches end of non-void function
确保为编译器启用了警告(例如,在GCC中,从命令行使用
-Wall
),并注意警告

您应该使用类似以下内容:

int true_name(){
    return first_name + last_name;
}
下一个问题在这一行:

cout << " My name is " + name.true_name() << endl;

另外,它是“人”,而不是“人”。这里有一些问题

int true_name(){
    first_name + last_name;
}
意思是“添加first_name和last_name,丢弃结果(因为您既没有返回结果,也没有将其分配给变量),然后返回一些随机结果(最近发生的任何事情都可能在相应的CPU寄存器中)。”

编译器应该向您发出警告消息来解释这一点。例如,GCC会发出以下警告:

warning: statement has no effect
warning: control reaches end of non-void function
确保为编译器启用了警告(例如,在GCC中,从命令行使用
-Wall
),并注意警告

您应该使用类似以下内容:

int true_name(){
    return first_name + last_name;
}
下一个问题在这一行:

cout << " My name is " + name.true_name() << endl;

还有,是“人”,不是“波斯”

你在
true\u name
中缺少
return
语句。我想编译器至少会警告你这一点。谢谢@karlbielefeldty你在
true\u name
中缺少
return
语句。我想编译器至少会警告你这一点。谢谢@KarlBielefeldtVery谢谢。我应该说吗“姓名”;“姓名”;“姓名”;“否”?如何思考这一点?@ QCurun-in,C++中的“姓名”;意思是“一个人拥有一个名字,并对它负责,并且总是有一个名字,并且有一个确切的名字。”“姓名*”;“一个人在其他地方引用了一个名字,但并不拥有它”或“一个人拥有一个名字,这是多态的。”(我在这里简化了一些。)“一个人拥有一个名字,并且对它负责,并且总是有一个名字,而且只有一个名字”是你想要的,所以使用“名字”;“非常感谢。你用直白的语言解释,非常感谢。我应该在人类中把名字叫”名字“?”或“不知道名字”;如何思考这一点?@ Qcunun-in,C++名字,“名字”;意思是“一个人有名字,并且负责,并且总是有名字,而且有一个名字。”“名字*名字”;可以指一些事情;“一个人可能有名字,也可能没有名字”或“一个人在其他地方引用了一个名字,但不拥有它”或“一个人拥有一个名字,它是多态的。”(我在这里简化了一些。)“一个人拥有一个名字,并对它负责,并且总是有一个名字,而且只有一个名字”是你想要的,所以使用“名字”.非常感谢。你用简单明了的语言解释,非常直接。