c++ - 编译器在内部做什么来初始化变量并在构造对象时分配变量?

标签 c++

<分区>

Possible Duplicate:
Why should I prefer to use member initialization list?

A类有一个成员变量i。 i 可以在对象创建期间被初始化或赋值。

A)初始化

   class A {
         int i;
    public:
        A(int _i) : i(_i){}
    }

B)赋值

class A {
         int i;
    public:
        A(int _i) : { i = _i}
    }

我的问题是这两种方法之间的基本区别是什么?

最佳答案

区别在于在你的类中使用了哪种C++机制来初始化i。案例 (A) 通过构造函数对其进行初始化,案例 (B) 使用赋值运算符(如果未定义赋值运算符,则使用复制构造函数)。

大多数 C++ 编译器会为这个特定示例生成完全相同的代码,因为您使用的是 int,这是一种“普通旧数据”类型。如果 i 是一个类类型,它可能会产生很大的不同。

关于c++ - 编译器在内部做什么来初始化变量并在构造对象时分配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10134314/

相关文章:

c++ - COM SafeArray 的 SafeArray

c++ - 相当于 C++ 类型对的 Haskell

C++ 错误 : ‘_mm_sin_ps’ was not declared in this scope

类 union 类的 C++11 移动构造函数

c++ - 关于如何使用简单的 C++ 库(不使用 .net)和使用该库的 C++ 项目创建 .sln 的基本说明?

c++ - C++使用参数创建线程函数会导致转换错误

C++文件操作: Reading specific line in a file.

c++ - 我应该使用什么条件来停止文件读取循环?

c++ - 为什么我的数据元素被复制而不是 move ?

c# - 是否有涵盖变量作用域的代码指标