在未初始化c++的情况下使用的变量
Variable being used without being initialized c++
我对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] = ' ';
}
当然,如果您希望变量保持实际值,最好将其传递到构造函数中。
相关文章:
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在不传递命令行参数的情况下在 c++ 中设置环境变量
- 是否可以在不使用 decltype 的情况下推断先前定义的 extern 变量的类型
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- 如何在不为其声明变量的情况下获取和使用常量值的地址?
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- 需要使用 3 个变量在没有函数的情况下进行比较
- 在这种情况下,当尝试从单独的类更新变量时,我是否需要使用指针?
- 我们可以在不使用head指针的情况下通过使用head的简单变量而不是head的指针来实现链表吗
- C++11 - 获取编译时的所有类变量,并在没有 Boost 的情况下为它们调用方法
- 如何在没有setter的情况下设置类内部类的成员变量?
- 是否可以在不修改父类的情况下将成员变量初始化推迟到继承的类?
- 在没有外部文件的情况下在应用会话之间保存变量
- 变量如何在不创建对象的情况下获得内存
- 为什么可以在没有实例变量的情况下访问静态回调方法中的静态成员变量?
- 在链接的程序集文件中,我想从 c++ 调用代码访问变量.是否可以在不触发访问冲突的情况下执行此操作?
- 是否可以在没有结构的情况下创建新的类型变量?
- 如何对 int 变量应用验证,使其仅接受整数数据,并且在任何其他数据的情况下不会出错?