c ++:我没有得到正确的输出(菜鸟问题)



所以我对C++很陌生,我正在使用流和成员函数。我正在尝试获取包含我传递给我的类的值的输出,但我没有得到正确的值。相反,我得到的垃圾值如下:

( this is the name: , and this is the age: 3223232)

这是我的代码:

#include <iostream>
using namespace std;
class Person{
string name;
int age;
public:
ostream& print_on(ostream &o) {
return o << '( this is the name: ' << name << ', and this is the age: ' << age << ')';
}
Person(){
name="noname";
age=0;
}
Person(string name, int age){
name=name;
age=age;
}
void setName(string n) {
name=n;
}
string getName() {
return name;
}
void setAge(int a){
age=a;
}
int getAge(){
return age;
}
friend ostream& operator << (ostream &output,Person &p);
};
ostream& operator << (ostream &output, Person &p){
return p.print_on(output);
}
int main()
{
string name="Helen";
int age=24;
Person p(name,age);
cout<<p;
return 0;
}

在此构造函数定义中

Person(string name, int age){
name=name;
age=age;
}

这些参数隐藏具有相同名称的类的数据成员。

而是写例如

Person(string name, int age){
this->name=name;
this->age=age;
}

Person(string name, int age){
Person::name=name;
Person::age=age;
}

或者更好的方法是写

Person( const string &name, int age ) : name( name ), age( age )
{
}

支付您需要的帐户,包括标题<string>

#include <string>

此外,不更改类对象的成员函数应声明为常量函数。例如

ostream& print_on(ostream &o) const
{
//…
}

同样在友元运算符中,第二个参数也应该有限定符 const

friend ostream& operator << (ostream &output, const Person &p);

此代码:

Person(string name, int age){
name=name;
age=age;
}

是错误的,您正在将变量分配给它们。

尝试:

Person(string p_name, int p_age){
name = p_name;
age = p_age;
}

问题就在这里

Person(string name, int age){
name=name;
age=age;
}

您不是在设置类变量,而是在尝试设置与它们相等的参数。要设置人员的姓名和年龄,您必须使用this关键字,如下所示:

Person(string name, int age) {
this->name=name;
this->age=age;
}

最新更新