048day(类型转换构造函数和析构函数的学习)
来源:互联网 发布:咫尺网络应用号 编辑:程序博客网 时间:2024/05/29 13:48
172210704111-陈国佳总结《2017年11月27日》【连续048天】
标题: 类型转换构造函数和析构函数的学习;
内容:A.类型转换函数的目的是实现类型的自动转换;
只有一个参数,且不是复制构造函数的构造函数;
当需要时,编译系统会自动调用转换构造函数,建立一个无名的临时对象(或变量);
class Complex {
public:
double real,imag;
Complex(int i){ //类型转换构造函数
cout<<"TntConstructor called" <<endl;
real = i;imag =0;
}
Complex(double r,double i){real =r;imag =i;}
};
int main ()
{
Complex c1(7,8);
Complex c2=12;
c1=9; //9被自动转换成一个临时Complex对象;
cout<<c1.real<<","<<c1.imag<<endl;
return 0;
}
有两个字符串的原因是Complex c2=12;和c1=9;都调用了类型转换构造函数;
B.析构函数:
名字与类名相同,在前面加‘~’,没有参数和返回值,一个类最多只能有一个析构函数;
当对象消亡时,析构函数即被调用;
定义类时没写析构函数,则编译器生成缺省析构函数,它什么也不做;
如果定义了析构函数,则编译器不生成缺省析构函数;
如:
class String{
private :
char*p;
public:
String (){
p=new char[10];
}
~ String ();
};
String ::String()
{
delete []p;
}
此析构函数可以在对象消亡的时候,释放分配的空间;
析构函数与数组:
对象数组生命期结束时,对象数组的每个元素的析构函数都会被调用;
析构函数和运算符delete:
delete 运算导致析构函数调用;
析构函数在对象作为函数返回值返回后被调用:
class CMyclass{
public:
~CMyclass(){cout<<"destructor"<<endl;
}
};
CMyclass obj;
CMyclass fun(CMyclass sobj){
return sobj; //参数对象消亡时也会调用析构函数,函数调用返回时生成临时对象返回
}
int main()
{
obj =fun(obj);
return 0;
}
分析:调用fun后,形参消亡,生成第一个,并返回一个临时对象,当对obj赋值时,临时对象消亡,生产第二个,main函数结束,obj消亡,生成第三个;
C.最近试了几道算法题,写的头疼,以后要多练练了;
明日计划:构造函数析构函数调用时机;
- 048day(类型转换构造函数和析构函数的学习)
- 049day(构造和析构函数的调用时机,递归例题(四则运算表达式求值)的学习)
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- C++ 学习之构造函数:构造函数小结3 默认构造函数、隐式类型转换和复制构造函数
- 构造函数 复制构造函数 类型转换构造函数 析构函数
- 构造函数、复制构造函数、类型转换构造函数、析构函数
- 041day(熄灯问题的程序和构造函数的学习)
- 类型转换构造函数
- 类型转换构造函数
- 类型转换构造函数
- 类型转换构造函数
- 047day(复制构造函数和递归例题(波兰表达式)的学习)
- C++学习笔记:转换构造函数与类型转换函数
- c++构造函数和类型转换
- C++转换构造函数和类型转换函数
- c++转换构造函数和类型转换函数
- c++知识点---举例说明 转换构造函数 和 类型转换函数
- 第十二周 项目验证算法 (3)Dijkstra算法的验证
- 基于PCL的三维重建——txt文件格式转化pcd文件格式
- NKOJ 2638 (SDOI 2013) 森林 (启发式LCA+主席树)
- Python——for循环#我也不记得写过没有
- mac 安装gradle
- 048day(类型转换构造函数和析构函数的学习)
- VSCode 常用快捷键与插件
- python导入TXT、Excel、csv文件
- 博客 学院 下载 更多 zxy18210943475 java && 和 &、|| 和 | 的区别和作用
- ubuntu 16.04挂载2T机械键盘
- 机器学习_SVM支持向量机
- leetCode-Rotate Array
- pytho3.6 + opencv3 错误记录
- 网卡驱动框架