c++ - 允许变量未初始化有什么好处?

标签 c++ memory variables mapping initialization

在许多语言中,您可以在初始化变量之前声明并使用它。

例如,在 C++ 中,您可以编写如下代码片段:

int x;
cout << x;

这当然会返回不可预测的(好吧,除非你知道你的程序是如何映射内存的)结果,但我的问题是,为什么编译器允许这种行为?

允许使用未初始化的内存是否有一些应用或效率?

编辑:我突然想到,将初始化留给用户会最大限度地减少对生命周期有限(写入周期)的内存介质的写入。只是上述“性能”标题下的一个具体示例。谢谢。

最佳答案

我的想法(我以前错了,问问我的妻子吧)是它只是该语言早期版本的遗留物。

C 的早期版本不允许您在函数中任何您想要的位置声明变量,它们必须位于顶部(或者可能位于 block 的开头,很难记住我的头顶,因为我现在很少这样做了)。

此外,只有当您知道变量应该是什么时,您才会有设置变量的愿望,这是可以理解的。如果您接下来要做的只是覆盖该值(这就是人们从这里获得性能的地方),那么将变量初始化为某个东西是没有意义的。

这就是为什么有必要允许未初始化的变量,尽管在初始化它们之前你仍然不应该使用它们,并且好的编译器会发出警告让你知道.

在 C++(以及后来的 C 版本)中,您可以在函数的任何位置创建变量,您确实应该同时创建并初始化它。但这在早期是不可能的。你必须使用类似的东西:

int fn(void) {
    int x, y;
    /* Do some stuff to set y */
    x = y + 2;
    /* Do some more stuff */
}

现在,我会选择:

int fn(void) {
    int y;
    /* Do some stuff to set y */
    int x = y + 2;
    /* Do some more stuff */
}

关于c++ - 允许变量未初始化有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3436920/

相关文章:

c++ - 我怎样才能最好地_选择_操作哪些内部参数?

c++ - Matlab Mex 文件构建 : Code change doen't influence the mex file anymore

c++ - 在其赋值运算符方法中调用对象的析构函数

python - 如何正确测量 Linux 上的进程内存使用情况?

java - 输出字符串中元音数量最多的单词

php - 大括号中的变量 - PHP 编码问题

C++内存分配问题

c++ - 将距离公式计算为给定的双整数

linux - 32/64 位应用程序、操作系统和处理器之间的关系是什么?

java - 从位于私有(private)方法中的变量读取