C++函数返回值为对象时,构造析构函数的执行细节
2013-02-18 11:44
555 查看
看如下代码:
#include<iostream>
class TestConstructor
{
public:
TestConstructor()
{
std::cout<<"TestConstructor()"<<std::endl;
}
~TestConstructor()
{
std::cout<<"~TestConstructor()"<<std::endl;
}
TestConstructor(const TestConstructor& testObj)
{
std::cout<<"TestConstructor(const TestConstructor&)"<<std::endl;
}
TestConstructor& operator = (const TestConstructor& testObj)
{
std::cout<<"TestConstructor& operator = (const TestConstructor& testObj)"<<std::endl;
return *this;
}
};
TestConstructor testFunc()
{
TestConstructor testInFunc; //3、调用TestConstructor() 生成对象testInFunc
return testInFunc; //4、调用TestConstructor(const TestConstructor&) 生成临时对象
//5、调用析构函数,析构对象testInFunc
}
int main()
{
TestConstructor test; //1、调用TestConstructor() 生成对象test
test = testFunc(); //2、调用testFunc() //6、调用等号把临时对象复制给对象test //7、调用析构函数,析构临时对象
return 0; //8、调用析构函数,析构对象test
}
看输出:
有注释,有输出。执行细节,一目了然了吧
您可能感兴趣的文章:
相关文章推荐
- C++函数返回值为对象时,构造析构函数的执行细节
- 函数返回值为对象时,构造析构的执行细节
- PHP面向对象1.3对象中成员的访问和构造析构函数
- C++返回值为对象时复制构造函数不执行怎么破
- c++函数调用的返回值在函数调用栈上如何传递给调用者(返回大对象时)
- C++类对象在各种内存区的构造函数析构函数执行顺序
- C++ primer(十)--对象和类 共有/私有类访问、 构造/析构函数
- 类与对象、构造与析构函数
- C++函数副本机制研究&函数返回值与拷贝构造的浅拷贝和深拷贝的关系
- Java对象的构造过程---子类继承父类时(非)静态块及构造函数等的执行顺序
- 浅出C++对象模型——理解构造函数、析构函数执行顺序
- 浅谈C++对象模型——理解构造函数、析构函数执行顺序
- C++中对象作为函数形参,返回值时,构造函数,复制构造函数,析构函数的调用顺序(1)
- 【面相对象】静态代码块、构造代码块和构造函数的执行顺序
- 执行顺序:(优先级从高到低)静态代码块>mian方法>构造代码块>构造方法。 其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。
- 全局对象和函数内静态对象调用构造析构函数差异
- 第10周-任务0-构造和析构函数的执行过程实例解析
- 宋体、构造函数-浅出C++对象模型——理解构造函数、析构函数执行顺序-by小雨
- 7.返回值为引用 和 8.静态对象的构造