【问题标题】:C++ : behavior between initialization list and constructor bodyC++:初始化列表和构造函数主体之间的行为
【发布时间】:2020-03-25 00:21:28
【问题描述】:

这两种变体有什么区别?它们的行为方式似乎完全相同。

class A{
public:
    A():b(nullptr)
        {
            b = this; // variant 1
            b.a = this; // variant 2
        }
    class B {
    public:
        B(A* a):
            a(a){}
    private:
        friend class A;
        A* a;
    };
    B b;
};

【问题讨论】:

    标签: c++ constructor initialization-list


    【解决方案1】:

    第一个变体使用隐式构造函数,这意味着 b 使用 this 指针重建。 第二个变体只是修改了b.a 的值。 请注意,在这个简单的实现中没有区别。

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 2017-03-07
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多