在未初始化c++的情况下使用的变量

Variable being used without being initialized c++

本文关键字:变量 情况下 初始化 c++      更新时间:2023-10-16

我对C++还比较陌生。我正在使用一个函数给一个对象一些值,但我一直得到一个错误,即该对象在未初始化的情况下被使用。为什么?

Worker:的定义

class Worker 
    public:
    int telephone;
    char firstname[20];
    char task[100];
    int salary;
    int id;
};

实际代码:

Worker worker1;
worker1 = getWorker(worker1);
Worker getWorker(Worker worker){
    cout << "First name: ";
    cin >> worker.firstname;
    return worker;

getWorker不需要参数。使用本地对象获取输入并返回:

Worker getWorker() {
    Worker worker;
    // whatever
    return worker;
}

此外,请使用初始化,而不是创建对象然后分配给它们。像这样:

Worker worker1 = getWorker();

由于您没有明确设置firstname的值,因此在组成firstname的20个字节中可能存储了任何类型的垃圾。char缓冲区是0终止的,所以最好的做法是在默认构造函数中为firstname指定一个初始值:

Worker(){
  //omitting other code
  firstname[0] = '';
}

当然,如果您希望变量保持实际值,最好将其传递到构造函数中。

相关文章: