“myConstructor(A * a):b(a-> i){..}”在C ++中是什么意思

时间:2018-03-19 06:14:47

标签: c++ c++11

b(a->i)在这里是什么意思,它与内存有什么关系?

class myConstructor {
    public:
         myConstructor(A* a) : b(a->i) {
             // some operations
         }
    private:
         B* b;
}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

它在调用构造函数主体之前初始化成员b。这一点非常重要,特别是当您有一些const成员或一些references时。例如

class ConstMemberedClass
{
  public:
    ConstMemberedClass() : c_member(64) // initialization of const member
    {
      doStuffWithConstMember(c_member);
    }

  private:
    const int c_member;
}

class ReferenceMemberedClass
{
  public:
    ReferenceMemberedClass(MyClass& ref) : r_object(ref) // initialization of reference
    {
      doStuffWithReference(r_object);
    }

  private:
    MyClass& r_object;
}