编译器在内部做什么,用于初始化变量并在构造对象时分配变量

what compiler does internally for initializing a variable and assigning a variable while constructing object?

本文关键字:变量 对象 分配 编译器 什么 用于 初始化 在内部      更新时间:2023-10-16

可能的重复项:
为什么我应该更喜欢使用成员初始化列表?

类 A 有一个成员变量 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是一种类类型,它可以产生很大的不同。