C++primer--拷贝控制__构造函数和析构函数的执行时期
来源:互联网 发布:淘宝发错货还用退回吗 编辑:程序博客网 时间:2024/05/21 09:12
#include<iostream>#include<vector>using namespace std;struct X{ X() { cout << "这里是构造函数X()" << endl; } X(const X&) { cout << "这里是拷贝构造函数" << endl; } X&operator =(const X&rhs) { cout << "这里是拷贝赋值函数X&operator=(const X&rhs)" << endl; return *this; } ~X() { cout << "这里是析构函数~X()" << endl; }};void testx1(X&x){}void textx2(X x){}int main(int argc, char ** argv){ cout << "这里是局部变量" << endl; X x; cout << endl; cout << "非引用传参" << endl; textx2(x); cout << endl; cout << "引用传参" << endl; testx1(x); cout << endl; cout << "动态分配" << endl; X*px = new X; cout << endl; cout << "将结构体变量添加到容器vector中" << endl; vector<X>getX; getX.push_back(x); cout << endl; cout << "释放动态分配对象" << endl; delete px; cout << endl; cout << "间接初始化和赋值" << endl; X y = x; y = x; cout << endl; cout << "程序结束" << endl; system("pause"); return 0;}
本例主要说明了一个结构体的拷贝基本控制,以及析构的执行时期,帮助理解构造函数以及析构函数的意义。可以自己试着分析一下代码的生成,然后试运行
运行结构如下:
对于构造函数执行的时期再谈
看代码
#include<iostream>#include<vector>using namespace std;class numeered{private: static int textnum;public: numeered() { mysn = textnum++; } numeered(const numeered&n) { mysn = ++textnum; } int mysn;};int numeered::textnum = 0;void print(const numeered &s){ cout << s.mysn << endl;}int main(){ numeered a, b = a, c = b; print(a); print(b); print(c); system("pause"); return 0;}
如果只是简单的没有自定义构造函数的话,在定义类对象时进行的赋值操作会进行简单的赋值操作,也就是会这里的a,b,c的mysn值相同不发生改变但是,在进行输出的时候,你输出的时候,传进去的类类型参数是numeered x
就会在传递参数的时候进行参数默认构造,对传进去的mysn值进行改变,而你在传递一个常引用类类型参数时,则不发生改变。上面的代码例子,意在说明,是传递常量引用后的代码,输出值你可以与传递非常量引用的值比对,会发现是不一样的。
0 0
- C++primer--拷贝控制__构造函数和析构函数的执行时期
- 【足迹C++primer】54、继承类的范围,构造函数和拷贝控制
- C/C++——构造函数、复制构造函数和析构函数的执行时刻
- 【C++Primer】封装_拷贝构造函数
- string类的构造函数,析构函数,拷贝构造函数和赋值构造函数
- 关于c++默认的构造函数、析构函数、拷贝构造函数、move函数
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- 构造函数,拷贝构造函数和析构函数
- 构造函数、拷贝构造函数和析构函数
- String的构造函数,拷贝构造函数、析构函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- String类的构造函数,析构函数,拷贝构造函数和赋值函数
- string类的构造函数,拷贝构造函数,析构函数和赋值函数
- 编写类String的构造函数、拷贝构造函数、析构函数和赋值函数
- string类的构造函数、析构函数、拷贝构造函数和赋值函数
- 编写类String 的构造函数、拷贝构造函数、析构函数和赋值函数
- 写String类的普通构造函数,析构函数,拷贝构造函数和赋值函数
- 《C++ Primer》读书笔记第十五章-3-构造函数和拷贝控制、容器与继承
- iOS,图片轮播器,简单好用,拿来直接用
- Java Hex 16进制的 byte String 转换类
- 配置Windows 2008 R2 64位 Odoo 8.0 源码PyCharm开发调试环境
- mysql的数据备份和恢复
- Linux下高并发socket最大连接数所受的限制问题
- C++primer--拷贝控制__构造函数和析构函数的执行时期
- C语言冒泡排序及选择排序优化<代码>
- 深入理解计算机系统 1.8 系统通过网络与其它系统交流
- 轻松学习JavaScript十七:JavaScript的BOM学习(二)
- PHP访问MySQL几种方法
- Majority Element I&II | Leetcode
- 关于微信原生支付(扫码支付)的两种支付模式的理解和比较...
- ListView子布局样式有多个的处理
- 【LEETCODE】205-Isomorphic Strings