上课不正常

use*_*730 1 c++ class

我仍在尝试学习课程,但我创建了这个,我似乎得到了一些奇怪的数字,如记忆编号或某些东西,我无法弄清楚什么是错的.

#include <iostream>
#include <string>
using namespace std;

class JoesClass {
public:
    int setAge(int age) {       
        return age;
    }

    void displayAge() {
        cout << "your age is " << age << endl;  
    }
private:
    int age;
};

int main()
{
    JoesClass newobject;
    newobject.setAge(40);
    newobject.displayAge();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Mik*_*our 6

问题是这个:

int setAge(int age) {
    return age;
}
Run Code Online (Sandbox Code Playgroud)

没有设定年龄.它只返回你给它的值,而不更新类成员.你想要更像的东西:

void setAge(int age) {
    this->age = age;
}
Run Code Online (Sandbox Code Playgroud)

您可能想要更改参数名称,因此它不会隐藏类成员:

void setAge(int new_age) {
    age = new_age;
}
Run Code Online (Sandbox Code Playgroud)

您还应该放弃放入using namespace std;全局命名空间的习惯,而是限定标准库名称std::cout.虽然using指令可以节省一些混乱,但是当您声明与库中的某些内容同名的内容时,它可能会导致问题.

  • 为什么建议使用`age = new_age;`而不是`this-> age = age;`?我发现后者更容易阅读,因为它更明确. (2认同)