C++ C++;构造函数接受成员初始值设定项

C++ C++;构造函数接受成员初始值设定项,c++,C++,我想访问构造函数成员初始化所需的数量。当类对象由程序初始化时,将调用默认构造函数。同时,构造函数调用构造函数初始化我提到的内容 class A { public: A(); void fun1(); void fun2(); }; A::A() : fun1() , fun2() { cout << " Hi" << endl; } void A::fun1() { cout << "Hello" <

我想访问构造函数成员初始化所需的数量。当类对象由程序初始化时,将调用默认构造函数。同时,构造函数调用构造函数初始化我提到的内容

class A {
public:
    A();
    void fun1();
    void fun2();
};
A::A()
    : fun1()
    , fun2()
{
    cout << " Hi" << endl;
}
void A::fun1()
{
    cout << "Hello" << endl;
}
void A::fun2()
{
    cout << "Bye" << endl;
}
int main()
{
    A obj_a;
    return 0;
}    

您正在调用初始值设定项列表中的函数,您应该在那里初始化数据成员。编译器查找名为fun1和fun2的数据成员,但找不到任何,所以会通知您。 您可以尝试以下方式:

 class A { 
    public: 
    A(); 
    void fun1(); 
    void fun2(); 
  }; 
  A::A() { 
    cout << " Hi" << endl; 
    fun1();
    fun2();
  } 
  void A::fun1() { 
    cout << "Hello" << endl; 
  }       
  void A::fun2() { 
    cout << "Bye" << endl; 
  } 
  int main() { 
    A obj_a; 
    return 0; 
  }
A类{
公众:
A();
void fun1();
void fun2();
}; 
A::A(){

cout您将得到错误:

error: class ‘A’ does not have any field named ‘fun1’
A::A():fun1(), fun2() {
因为
类A
没有任何名为fun1或fun2的数据成员

成员初始化列表用于初始化数据成员或调用基本构造函数

详情请参阅:

类的方法可以在构造函数体中调用,如:

A::A() 
{ 
   fun1();
   fun2();
}

A没有名为
fun1
fun2
的数据成员-它有具有这些名称的方法(或成员函数)。您不需要“初始化”一个函数,你只需要调用它。调用一个函数并不是初始化一个数据成员,而且,a没有任何需要初始化的数据成员。这段代码真的能准确地表示你要做的事情吗?对不起,我不明白。你要初始化函数。你为什么认为你需要它,你想它做什么?解释一下初始化器列表中的元素可能看起来很像函数调用,但它们不是。#包括使用命名空间std;class a{public:a();private:int fun1;int fun2;};a::a():fun1(12),fun2(14){cout
A::A() 
{ 
   fun1();
   fun2();
}