0
class Foo
{
public:
  // single parameter constructor, can be used as an implicit conversion
  Foo (int foo) : m_foo (foo) 
  {
  }

  int GetFoo () { return m_foo; }

private:
  int m_foo;
};

m_foo 是私有部分中定义的整数,但 m_foo(foo) 是什么?这看起来像一个功能。

m_foo 既是整数又是函数?这是如何运作的?

Foo(int foo) 构造函数正在扩展 m_foo 函数。

4

4 回答 4

5
Foo (int foo) : m_foo (foo) 

这是一个初始化列表。它初始化m_foo为具有值foo

于 2013-08-26T15:42:00.633 回答
2

您正在使用初始化列表初始化一个整数变量。基本上在你进入构造函数的主体之前m_foo被分配给foo.

于 2013-08-26T15:43:01.600 回答
1

它是一个初始化器。它m_foo通过调用它的复制构造函数来设置项目的值(而不是创建一个临时对象然后调用复制构造函数,如果你要在构造函数中设置它的话m_foo = foo)。

于 2013-08-26T15:43:27.873 回答
-1

但是,我不确定有关 C++ 的基本问题是否在这里占有一席之地:

Foo (int foo) : m_foo (foo) 

m_foo意思是:定义一个构造函数,并用形参初始化成员变量foo

于 2013-08-26T15:42:21.777 回答