在下面的代码中,它有以下行
base_list(const base_list &tmp) :memory::SqlAlloc()
base_list是一个方法,内存是命名空间,SqlAlloc是一个类,所以将它们组合在一起意味着什么?
class base_list :public memory::SqlAlloc
{
public:
base_list(const base_list &tmp) :memory::SqlAlloc()
{
elements= tmp.elements;
first= tmp.first;
last= elements ? tmp.last : &first;
}
答案 0 :(得分:3)
base_list(const base_list &tmp) :memory::SqlAlloc()
使用Initializer list
在名称空间SqlAlloc
内调用类memory
的构造函数。
有关在C ++中使用Initializer List
的优点的详细信息,请参阅this。
答案 1 :(得分:2)
它调用基类memory::SqlAlloc()
的默认构造函数。
namespace memory {
class SqlAlloc
{
public:
SqlAlloc() {} // SqlAlloc's default constructor
};
}
//...
class base_list : public memory::SqlAlloc
{
public:
// base_list constructor
base_list(const base_list &tmp) : memory::SqlAlloc()
{
// The code after the ":" above and before the "{" brace
// is the initializer list
elements= tmp.elements;
first= tmp.first;
last= elements ? tmp.last : &first;
};
请考虑以下事项:
int main()
{
base_list bl; // instance of base_list called "bl" is declared.
}
创建bl
时,它会调用base_list
的构造函数。这会导致base_list
构造函数的初始化列表中的代码运行。该初始化列表包含memory::SqlAlloc()
,它调用SqlAlloc
的默认构造函数。当SqlAlloc
的构造函数完成时,运行base_list
的构造函数。
答案 2 :(得分:1)
base_list是构造函数,它调用基类的构造函数(SqlAlloc)。
答案 3 :(得分:1)
:memory::SqlAlloc()
调用基类默认构造函数,因此这里不需要;
语法称为:(基本)初始化列表,另请参阅Difference between initializer and default initializer list in c++
答案 4 :(得分:0)
base_list
继承自memory::SqlAlloc
。
您询问的行是复制构造函数。 : memory::SqlAlloc()
after是基类初始值设定项。它调用基类的构造函数。