首页 新闻 会员 周边

c++复制构造函数的调用问题

0
悬赏园豆:5 [待解决问题]

在C++ primer(第四版)书中的第408页,看到复制构造函数何时调用的情况,其中书中说到初始化容器元素

vector<string> svec(5);

 

编译器首先使用string默认构造函数创建一个临时值来初始化svec,然后使用复制构造函数将临时值复制到svec的每个元素。

我想验证一下,是不是如书中所说的调用了复制构造函数,但不知道怎么在string的复制构造函数中下断点,于是写了下面的验证程序:

 

 1 class Test
 2 {
 3 public:
 4     Test()
 5     {
 6         cout << "Test()" << endl;
 7     }
 8     Test(const Test& rhl)
 9     {
10         cout << "Test(const Test&)" << endl;
11     }
12 };
13 
14 int main()
15 {
16     vector<Test> testVector(5);
17     return 0;
18 }

 

但是运行结果,发现只是调用了5次默认构造函数,不知道问题出在哪,还请各位帮忙看看。


        
c++
forfunjust的主页 forfunjust | 初学一级 | 园豆:197
提问于:2013-08-01 00:44
< >
分享
所有回答(1)
0

你的复制构造函数没有传参数,所以只会调用默认构造函数。

_随心所欲_ | 园豆:202 (菜鸟二级) | 2013-08-02 10:58

代码没有错,只是编译器做了优化,原先是在VS2012编译,后来在Linux测试成功了,调用一次默认构造函数,5次复制构造函数

支持(2) 反对(0) forfunjust | 园豆:197 (初学一级) | 2013-08-04 18:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册