类对象的生存周期
来源:互联网 发布:好医生app软件 编辑:程序博客网 时间:2024/05/22 00:54
请先来看一段代码
#include<iostream>#include<string.h>#pragma warning(disable:4996)using namespace std;class CGoods{public:CGoods(){}CGoods(float price){_price=price;}CGoods(char *name,int amount,float price){_name=new char[strlen(name)+1];strcpy(_name,name);_amount=amount;_price=price;}~CGoods(){}CGoods(const CGoods &rhs){_name=new char[strlen(rhs._name)+1];strcpy(_name,rhs._name);_amount=rhs._amount;_price=rhs._price;}void Operator(const CGoods &rhs){if(this==&rhs){return;}delete[]_name;_name=new char[strlen(rhs._name)+1];strcpy(_name,rhs._name);_amount=rhs._amount;_price=rhs._price;}private:char *_name;int _amount;float _price;};int main(){CGoods good1; //不带参数的构造函数CGoods good2("shangpin1",20,9.5); //带3个参数的构造函数CGoods good3(good2); //拷贝构造函数good1=good3; //赋值运算符重载函数good1=CGoods("shangpin2",30,12.5); //构造临时对象、赋值运算符重载函数、析构临时对象 //显示生成临时对象 //临时对象的生存周期:临时对象所在语句,即一个表达式结束(,;?) CGoods good4=CGoods("shangpin2",30,12.5); //带三个参数的构造函数 //用临时对象构造同类型的新对象的时候,此时临时对象不生成,用构造临时对象的方法直接构造目标对象(编译器的优化)good1=89.5; //构造临时对象、赋值运算符重载函数、析构临时对象 //隐式生成临时对象 其他类型->类类型:看该类有没有构造函数,以其他类型作为参数个数,隐式生成一个临时对象 good1=(CGoods)("shangpin2",30,12.5); //构造临时对象、赋值运算符重载函数、析构临时对象 //内含逗号表达式 等同于good1=CGoods(12.5);CGoods *p=&CGoods("shangpin2",30,12.5); //构造临时对象、析构临时对象 //错误,出了语句P指针就为野指针 CGoods &q=CGoods("shangpin2",30,12.5); //带三个参数的构造函数 //正确,引用一个对象,临时对象的生存周期就变成引用这个对象的生存周期}
阅读全文
0 0
- 类对象的生存周期
- 类对象的生存周期
- 类对象的生存周期
- 类 对象生存周期
- 类和对象的生存周期
- c++类对象的生存周期
- C++对象的生存周期
- 对象的生存周期对比
- C++对象的生存周期
- 对象的生存周期探究
- C++_类_对象的生存周期
- 单元线程对象的生存周期
- 单元线程对象的生存周期
- [C++]C++对象的生存周期
- C++关于对象的生存周期
- C++中对象的生存周期
- 页面的生存周期
- 页面的生存周期
- 第一章作业
- HDOJ 1563 Find your present!
- 最近邻搜索之乘积量化(Product Quantizer)
- 主机ping不通虚拟机
- es jar包冲突问题
- 类对象的生存周期
- window.location
- Python3 和 Python2 主要差异
- js拼接字符串函数名称中带参数引号问题
- JSP中三种弹出对话框的用法实例
- 06.奇特的一生评语
- SQL Server 2008 R2导出数据脚本的方法
- @suppressWarnings("unchecked") java 中是什么意思
- Express+Nodejs 下的登录拦截实现