我将通过Marshall Cline的C++ FAQ.
目前正在使用10.5点的代码.
我有这个:
class Fred
{
public:
Fred();
Fred(int x, int y)
{
std::cout << "Fred with two ints\n" << std::endl;
};
};
int main()
{
std::vector<Fred>(3, Fred(4,5));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望看到"Fred with two ints"打印3次 - 但它只打印一次.为什么 - 是不是被调用了3次?
这是vector您正在调用的构造函数的签名:
vector( size_type _Count, const Type& _Val, const Allocator& _Alloc = Allocator() );
Run Code Online (Sandbox Code Playgroud)
Fred(4,5)调用您定义的构造函数一次,并通过引用传递创建的实例到vector<Fred>构造函数.然后,将[创建的实例]复制3次到向量.使用(默认)复制构造函数执行复制操作; 所以你的构造函数不会被调用多次.
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |