调用构造函数进行类型转换
2013-11-19 16:13
204 查看
#include <iostream>
using namespace std;
class A
{
public:
A(int x){i=x;cout<<"构造函数执行!"<<i<<endl;}
~A(){cout<<"析构函数执行!"<<i<<endl;}
void get(){cout<<i<<endl;}
private:
int i;
};
int main()
{
A a(99); //调用A(int x)输出"构造函数执行!99"
a.get();
a=1000; //调用A(int x)将1000转换成类A临时对象并赋值给a,输出
// "构造函数执行!1000"
//接着调用~A()将刚创建的临时对象析构,输出"析构函数执行!1000"
a.get(); //调用get()输出1000
a=A(2); //调用A(int x),输出"构造函数执行!2"
//生成类A的临时对象并赋值给a
//赋值之后, 调用~A(),临时对象被销毁, 输出"析构函数执行!2"
a.get(); //调用get()输出2
A b(35); //调用A(int x)输出"构造函数执行!35"
//函数结束时析构的顺序与构造正好相反,先析构对象b再析构对象a
//调用对象b的析构函数,输出"析构函数执行!35"
//调用对象a的析构函数,输出"析构函数执行!2"
return 0;
}
using namespace std;
class A
{
public:
A(int x){i=x;cout<<"构造函数执行!"<<i<<endl;}
~A(){cout<<"析构函数执行!"<<i<<endl;}
void get(){cout<<i<<endl;}
private:
int i;
};
int main()
{
A a(99); //调用A(int x)输出"构造函数执行!99"
a.get();
a=1000; //调用A(int x)将1000转换成类A临时对象并赋值给a,输出
// "构造函数执行!1000"
//接着调用~A()将刚创建的临时对象析构,输出"析构函数执行!1000"
a.get(); //调用get()输出1000
a=A(2); //调用A(int x),输出"构造函数执行!2"
//生成类A的临时对象并赋值给a
//赋值之后, 调用~A(),临时对象被销毁, 输出"析构函数执行!2"
a.get(); //调用get()输出2
A b(35); //调用A(int x)输出"构造函数执行!35"
//函数结束时析构的顺序与构造正好相反,先析构对象b再析构对象a
//调用对象b的析构函数,输出"析构函数执行!35"
//调用对象a的析构函数,输出"析构函数执行!2"
return 0;
}
相关文章推荐
- 【c++程序】调用构造函数进行类型转换
- 调用构造函数进行类型转换
- 调用构造函数进行类型转换
- 调用构造函数进行类型转换
- 调用构造函数进行类型转换(显式和隐式)
- 调用构造函数进行类型转换
- C++ 转换类型运算符 调用构造函数实现的类型转换
- C++ 转换类型运算符 调用构造函数将变量转化成为一个对象的成员变量
- C++使用构造函数进行类型转换
- VA利用反射进行数据库的读取免数据类型转换
- C#调用C++的DLL 所有数据类型转换方式
- C#调用VC的DLL的接口函数参数类型转换
- C#调用C++的DLL搜集整理的所有数据类型转换方式
- C#调用dll时的类型转换总结
- 利用<sstream> 将string代表的数值进行数值类型转换
- 没做过编译器就是被人欺——从一道变态的类型转换题猜编译器的行为(指针直接调用自己的非虚函数,当时是什么类型就是什么,但数据成员仍用自己的)
- 对对象类型和调用方法属性进行存储以提升反射性能
- Struts2 (动态调用、接收请求参数、类型转换、数据验证、拦截器)Day:2018/2/7
- C#调用C++的DLL 所有数据类型转换方式
- C#调用C++的Dll(dll,DLL)类型之间转换笔记