调试拷贝赋值运算符和析构函数什么时候起作用
来源:互联网 发布:txt阅读器 for mac 编辑:程序博客网 时间:2024/06/01 14:25
#include <iostream>
#include <vector>
#include <initializer_list>
#include <vector>
#include <initializer_list>
struct X {
X() { std::cout << "X()" << std::endl; }
X(const X&) { std::cout << "X(const X&)" << std::endl; }
X& operator=(const X&)
{
std::cout << "X& operator=(const X&)" << std::endl;
return *this;
}
~X() { std::cout << "~X()" << std::endl; }
};
X() { std::cout << "X()" << std::endl; }
X(const X&) { std::cout << "X(const X&)" << std::endl; }
X& operator=(const X&)
{
std::cout << "X& operator=(const X&)" << std::endl;
return *this;
}
~X() { std::cout << "~X()" << std::endl; }
};
void f(const X& rx, X x)
{
std::vector<X> vec;
vec.reserve(2);
vec.push_back(rx);//rx赋值给vec的第一个元素,调用拷贝构造函数
vec.push_back(x);//x赋值给vec的第二个元素,调用拷贝构造函数
}
{
std::vector<X> vec;
vec.reserve(2);
vec.push_back(rx);//rx赋值给vec的第一个元素,调用拷贝构造函数
vec.push_back(x);//x赋值给vec的第二个元素,调用拷贝构造函数
}
int main()
{
X* px = new X;//调用默认构造函数
f(*px, *px);//后一个*px调用拷贝构造函数
delete px;
return 0;
}
/*
输出结果为:
X()
X(const X&)
X(const X&)
X(const X&)
~X()
~X()
~X()
~X()
*/
{
X* px = new X;//调用默认构造函数
f(*px, *px);//后一个*px调用拷贝构造函数
delete px;
return 0;
}
/*
输出结果为:
X()
X(const X&)
X(const X&)
X(const X&)
~X()
~X()
~X()
~X()
*/
阅读全文
0 0
- 调试拷贝赋值运算符和析构函数什么时候起作用
- 什么时候需要重载拷贝构造函数(赋值运算符)!
- 拷贝构造函数,拷贝赋值运算符,析构函数
- 拷贝构造函数、拷贝赋值运算符、析构函数
- 拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符
- 拷贝构造函数和赋值运算符
- 类的构造函数、拷贝构造函数、赋值运算符和析构函数
- 构造函数、 拷贝构造函数 、 析构函数 和赋值运算符重载
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- C++中的构造函数,拷贝构造函数,析构函数和赋值运算符重载
- 再论拷贝构造函数和拷贝赋值运算符
- 赋值运算符/拷贝构造/构造/析构函数
- 什么时候用拷贝构造函数,和赋值构造函数
- 什么时候需要拷贝构造函数和赋值构造函数?
- 浅论析构函数,拷贝构造函数和赋值运算符
- Hibernate简介
- ZOJ 3721 Final Exam Arrangement(模拟+贪心)
- Java 工具类
- HTTP断点续传
- for循环(笔记整理)
- 调试拷贝赋值运算符和析构函数什么时候起作用
- 最常用正则表达式,你要的都在这里了
- [SMOJ1864]圆桌会议
- java 表格导出至Excel
- win 10 下Jmeter启动报版本错误 —— 解决
- Android GridView实现动画效果实现代码
- Java笔记:字符串
- 数据类型转换之 int 与 LPCTSTR
- 1-html-基础