使用复制构造函数的程序输出错误
Error in output of a program using copy constructor
我对刚刚制作的程序有一个非常简单的查询。如果你执行这个基本代码:
#include <iostream>
#include <vector>
class Exam
{
public:
int b;
Example(int a)
{
b = a;
}
Exam(const Exam &other)
{
printf("Copy constructor of %dn", other.b);
b = other.b;
}
};
int main()
{
std::vector<Exam> myvector;
Exam ex1(1);
Exam ex2(2);
myvector.push_back(ex1);
myvector.push_back(ex2);
return 1;
}
它生成以下输出:
Copy constructor of 1
Copy constructor of 2
Copy constructor of 1
为什么"1"的复制构造函数执行两次,而"2"的复制构造函数只执行一次?
尝试添加该行
myvector.reserve(2);
在您声明后立即
std::vector<Example> myvector;
当向量必须调整自身大小以允许push_back第二个示例时,幕后似乎正在发生一些事情。
相关文章:
- 如何从Windows应用程序输出到标准?
- 在由Sublime文本3编译后在cmd上显示Java程序输出
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 而循环:简单的除法程序输出零,不明白为什么
- Qt creator 4.11,在应用程序输出面板中创建一个链接
- 使用复制构造函数的程序输出错误
- 为什么Qt Creator的应用程序输出不能从spdlog记录器打印
- 为什么在 Direct X 11 中没有我的程序输出?
- 我怎样才能阻止我的程序输出时间,它使我的程序难以阅读
- 程序输出奇怪的字符
- 程序输出"nan"
- 为什么我的C++程序输出不同的数字来将米转换为英尺?
- 3D 纹理大小会影响程序输出,而不会引发错误
- C++,程序输出无效输入,但继续通过循环
- 如何连接C++和Excel(从C++程序输出到Excel电子表格)
- 为什么我的C 程序输出乱码代码
- QT小部件应用程序输出到控制台
- 混淆了具有虚拟继承的程序输出
- 为什么我的C++程序输出这个
- 为什么我的程序输出不断变化?EAX寄存器不断更改值