C++ C++;函数声明语法

C++ C++;函数声明语法,c++,syntax,C++,Syntax,以下摘录的含义是什么: : program_(program), max_iters_(max_iterations), num_iters_(0) 在这段代码中: Search::Search(const string& program, int max_iterations) : program_(program), max_iters_(max_iterations), num_iters_(0) { max_branch_ = 0; // ... } 这是

以下摘录的含义是什么:

  : program_(program), max_iters_(max_iterations), num_iters_(0) 
在这段代码中:

Search::Search(const string& program, int max_iterations)
  : program_(program), max_iters_(max_iterations), num_iters_(0) 
{
  max_branch_ = 0; 
 // ...
}

这是一个构造函数初始化列表。可以假定,
Search
是一个包含数据成员
program
max\u iters
num\u iters
的类,它是一个构造函数初始化列表。可以假定,
Search
是一个包含数据成员的类,
program
max\iters
num\iters
,您所指的是初始值设定项列表。类或结构可以在其构造函数中使用此列表初始化成员变量

例如:

struct foo
{
    foo() : member_(0) {}

    private:
        int member_;
};
struct bar { bar(int) {} };

struct foo
{
    foo() 
        : bar_(0) // does not compile without this line
                  // because the compiler will try to default
                  // construct otherwise
    {}

    private:
        bar bar_;
};
如果您的成员没有默认构造函数,则初始化列表尤其重要,因为当您到达构造函数体中时,每个成员都已创建。如果没有为此成员选择合适的构造函数,编译将失败

例如:

struct foo
{
    foo() : member_(0) {}

    private:
        int member_;
};
struct bar { bar(int) {} };

struct foo
{
    foo() 
        : bar_(0) // does not compile without this line
                  // because the compiler will try to default
                  // construct otherwise
    {}

    private:
        bar bar_;
};

您所指的是初始值设定项列表。类或结构可以在其构造函数中使用此列表初始化成员变量

例如:

struct foo
{
    foo() : member_(0) {}

    private:
        int member_;
};
struct bar { bar(int) {} };

struct foo
{
    foo() 
        : bar_(0) // does not compile without this line
                  // because the compiler will try to default
                  // construct otherwise
    {}

    private:
        bar bar_;
};
如果您的成员没有默认构造函数,则初始化列表尤其重要,因为当您到达构造函数体中时,每个成员都已创建。如果没有为此成员选择合适的构造函数,编译将失败

例如:

struct foo
{
    foo() : member_(0) {}

    private:
        int member_;
};
struct bar { bar(int) {} };

struct foo
{
    foo() 
        : bar_(0) // does not compile without this line
                  // because the compiler will try to default
                  // construct otherwise
    {}

    private:
        bar bar_;
};

首先,它不是一个函数声明,而是一个类构造函数实现


在包含2个参数的ctor之前声明的类搜索,现在您的类搜索位于其实现前面,其中参数用于初始化数据成员。

首先,它不是函数声明,而是类构造函数实现


在2个参数的Cor之前声明的类搜索,现在您在它的实现之前,其中的参数用于初始化数据成员。< /P>见我的答案,只看到这个链接,但人们今天在哪里学习C++。我无法想象任何介绍性的文本都无法解释这一点。JAMESKANZEI我与C++的第一次接触是在大学,而脚本并没有涵盖这一点。当我第一次有一个没有默认构造函数的类时,我遇到了它?看到我的答案,看看这个链接只是好奇,但人们在哪里学习C++今天。我无法想象任何介绍性的文本都无法解释这一点。JAMESKANZEI我与C++的第一次接触是在大学,而脚本并没有涵盖这一点。当我第一次有一个没有默认构造函数的类时,我遇到了它?tnx@DanielDaranas.tnx,请回复。在函数体中初始化“max_branch_uu”与在函数体之前初始化“max_iters_uuu”有什么不同?@NewMrd您不能在构造函数体中初始化数据成员,只能为其赋值。当您到达构造函数主体时,所有数据成员都已初始化。请看[link]第57行。@NewMrd怎么办?我的问题是为什么没有在初始化列表中初始化所有数据成员?tnx以获得响应。在函数体中初始化“max_branch_uu”与在函数体之前初始化“max_iters_uuu”有什么不同?@NewMrd您不能在构造函数体中初始化数据成员,只能为其赋值。当您到达构造函数主体时,所有数据成员都已初始化。请看[link]第57行。@NewMrd怎么办?我的问题是为什么在初始化列表中没有初始化所有数据成员?我在挑剔,但构造函数是一个函数。在C++11标准中,12.1中提到了它作为一个特殊函数,但它仍然是一个函数。为什么“num_iters_uu”在初始化列表中初始化,而“max_branch_u”在主体中初始化?我很挑剔,但构造函数是一个函数。在C++11标准的12.1中提到它是一个特殊的函数,但它仍然是一个函数。为什么“num_iters_uu”在初始化列表中初始化,而“max_branch_u”在主体中初始化?