get 方法/函数在 C++ 中给了我一个意外的数字

问题描述

我有 3 个文件 main.cpp、Student.cpp 和 Student.h 代码如下:

ma​​in.cpp

#include<iostream>
#include "Student.h"
using namespace std;



int main()
{
    Student obj;
    obj.setName("My name is Uzair Khan. \n");
    cout << obj.getName();



    obj.setRollNumber(201);
    cout << obj.getRollNumber();

}

Student.cpp

#include "Student.h"

void Student::setName(string x)
{
    name = x;
}

string Student::getName()
{
    return name;
}

int Student::setRollNumber(int rollNumber)
{
    int RollNum = rollNumber;
    return RollNum;
}

int Student::getRollNumber()
{
    return rollNumber;
}

Student.h

#pragma once
#include <string>
using namespace std;



class Student
{
public:
    void setName(string x);
    string getName();
    int setRollNumber(int rollNumber);
    int getRollNumber();

private:
    string name;
    int rollNumber;
};

输出非常出乎意料。我不知道为什么我不能将卷号作为明确的整数,而不是获得卷号 201。我得到了这样的 -858993460。我不知道为什么。我是 C++ 的新手。如果有人可以帮助/解释,那我们将非常有帮助。 谢谢

(注意:- 我使用的是 Visual Studio 2019 社区版)

输出

My name is Uzair Khan.
-858993460

enter image description here

解决方法

问题出在 Student::setRollNumber,你有

int RollNum = rollNumber;

你在这里所做的是声明一个新的局部变量;您想要做的是分配给成员变量 rollNumber。您应该将参数名称更改为其他名称,然后执行以下操作:

int Student::setRollNumber(int n)
{
    rollNumber = n;
    return rollNumber;
}