代码之家  ›  专栏  ›  技术社区  ›  Peterdk

只需要在构造函数中初始化私有变量。怎么用?

  •  4
  • Peterdk  · 技术社区  · 16 年前

    我有个班级叫 Foo 使用需要参数的构造函数和其他类 Bar 用一个 私有变量

     class Foo 
     {
          public:
          Foo(string);
     }
    
     class Bar
     {
          public:
          Bar() { this->foo = Foo("test") }
    
          private:
          Foo foo;
     }
    

    但是,当我试图编译这个时,我得到一个编译错误,没有 Foo::Foo() 构造函数。它看起来像是私有变量 foo 课堂上 酒吧 在获取构造函数中分配的值之前初始化。

    我怎么能有个私人的 等待在构造函数中初始化的变量?

    2 回复  |  直到 16 年前
        1
  •  9
  •   Donald Miner    16 年前

    您需要使用初始值设定项列表。如果不这样做,代码将调用该对象的默认构造函数。

    Bar::Bar() : foo("test") {
       // stuff
    }
    
        2
  •  7
  •   Jerry Coffin    16 年前

    使用初始值设定项列表:

    Bar() : foo("test") {}
    

    BTW,在C++中使用的理由 this-> 是罕见的(并且经常指出其他问题)。