首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-08-09 
c++复制构造函数的调用问题在C++ primer(第四版)书中的第408页,看到复制构造函数何时调用的情况,其中书中

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

vector<string> svec(5);


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

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

 
1 class Test
 {
 public:
     Test()
     {
         cout << "Test()" << endl;
     }
     Test(const Test& rhl)
     {
         cout << "Test(const Test&)" << endl;
     }
 };
 
 int main()
 {
     vector<Test> testVector(5);
     return 0;
}


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

C++
[解决办法]
你的编译环境是什么? 有些编译器可能会做优化.
调用一次默认构造函数和 5 次拷贝构造函数的说法是没什么错的.
[解决办法]
引用:
在C++ primer(第四版)书中的第408页,看到复制构造函数何时调用的情况,其中书中说到初始化容器元素
vector<string> svec(5);


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

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

 
1 class Test
 {
 public:
     Test()
     {
         cout << "Test()" << endl;
     }
     Test(const Test& rhl)
     {
         cout << "Test(const Test&)" << endl;
     }
 };
 
 int main()
 {
     vector<Test> testVector(5);
     return 0;


}



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


我在linux上试了一下结果是对的。你得到的结果应该是跟编译器有关。

热点排行
Bad Request.