我知道这个,因为这会将构造函数参数分配给类成员:
class A
{
public:
some_type B;
A(some_type B)
{
this->B = B;
}
}
Run Code Online (Sandbox Code Playgroud)
但这会做什么:
class A
{
public:
some_type B;
A(some_type B) : B(B)
{
}
}
Run Code Online (Sandbox Code Playgroud)
这会将参数分配给自身或参数给类成员还是做其他事情?
构造之后的列表中的名称(我不知道它的调用方式)是如何解决的?
Thing在C++中称为成员初始化列表.
使用初始化程序列表(第2个示例)初始化成员并在构造函数体内为其赋值(第1个示例)之间存在差异.
通过初始化列表初始化字段时,构造函数将被调用一次.使用传递的参数构造对象.
如果使用赋值,则首先使用默认构造函数初始化字段,然后使用实际值重新分配(通过赋值运算符).
如您所见,在后者中存在创建和分配的额外开销,这对于用户定义的类可能是相当大的.
构造之后的列表中的名称(我不知道它的调用方式)是如何解决的?
public:
some_type B;
A(some_type B) : B(B)
{
}
Run Code Online (Sandbox Code Playgroud)
在上面的snipet中,有两个实体名为B:
A作为构造函数中的参数接收的变量作为A构造B(通过调用其构造函数)构成类的参数传递A.这里的名称没有歧义,构造函数的全部是:
this->B(B);
Run Code Online (Sandbox Code Playgroud)
this是class A指针. B()是类型的构造函数B. B括号内是一个类型的实例B. | 归档时间: |
|
| 查看次数: |
176 次 |
| 最近记录: |