在c++中跳过某些成员变量初始化的利弊是什么
What are the pros and cons of skipping some member variable initialization in c++?
考虑以下示例,
Aclass.h
class Aclass()
{
private:
int something;
double nothing;
};
Aclass.cpp
#include "Aclass.h"
Aclass::Aclass (int x) {
something = x;
nothing = y;
}
//Write some functions to manipulate x and y.
那么现在,如果我跳过在构造函数中初始化y
,会有什么区别呢?缺点是什么?它如何影响代码的其余部分?这是一种很好的编码方式吗?我所知道的是,无论x
和y
是否初始化,或者即使两者都没有初始化(默认构造函数(,构造函数都会创建一个对象,并且构造函数用于创建通用对象。
如果没有理由初始化变量,则不需要此变量
=>完全删除。说真的,一个未初始化的var有利于。。。?没有什么(仅用于初始化(。
如果您计划稍后在使用之前对其进行初始化:
你能保证它在第一次被读取之前会得到一个值吗?这与类方法的调用频率和顺序无关?然后它并不是"错误的",但与其乏味地检查它(并冒着错误的风险,因为它很复杂(,不如在构造函数中给它一个值。
不,故意让它变得更复杂不是一个好的编码方法。
保留任何未初始化的变量将允许它获取一些垃圾值。
结果=未定义的行为。而且它没有优点。
相关文章:
- 初始值设定项列表是否只接受使用相同类型的值初始化变量?
- 在 C++ 中访问 lambda 捕获初始化变量
- 为什么C++不支持对未初始化变量进行智能分析?
- 使用 clang++ 和 g++ 在C++中初始化变量
- C++使用 lambda 初始化变量
- 如何在初始化列表中的构造函数之后初始化变量/对象?
- C++ - 输出与初始化变量不同?
- C++/Win32 构造函数不使用从对话框获取的字符串初始化变量
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 具有静态存储持续时间的常量初始化变量的初始化顺序
- C++ 中的初始化变量
- C++中未初始化变量的值
- 如何在需要提及需要循环声明的其他类的类中初始化变量?
- 我想知道在构造函数中初始化变量时的生命周期
- 读取恰好具有良好值的未初始化变量
- 如何在 getter 的父类中初始化变量的情况下访问子类中的变量
- 为什么在 c++ 中有多种初始化变量的方法
- 没有参数的默认构造函数是否总是初始化变量?
- 是否可以使用 lambda 初始化变量(删除复制 ctor 时)
- 使用构造函数跳闸UB的新放置后使用初始化变量