class TestSimple
{
public:
TestSimple();
TestSimple(TestSimple&);
~TestSimple();
private:
};
TestSimple::TestSimple()
{
cout << "TestSimple Constructor...!" << endl;
}
TestSimple::TestSimple(TestSimple& obj)
{
cout << "TestSimple Copy Constructor!" << endl;
}
TestSimple::~TestSimple()
{
cout << "TestSimple Destructor...!" << endl;
}
TestSimple FunTestOne(TestSimple testSimple)
{
cout << "FunTestOne return!" << endl;
return testSimple;
}
TestSimple* FunTestTwo(TestSimple* testSimple)
{
cout << "FunTestTwo return!" << endl;
return testSimple;
}
TestSimple& FunTestThree(TestSimple& testSimple)
{
cout << "FunTestThree return!" << endl;
return testSimple;
}
1.传对象
TestSimple testSimple;
FunTestOne(testSimple);
输出:
TestSimple Constructor...!
TestSimple Copy Constructor!
FunTestOne return!
TestSimple Copy Constructor!
TestSimple Destructor...!
TestSimple Destructor...!
TestSimple Destructor...!
请按任意键继续. . .
TestSimple testSimple2;
FunTestTwo(&testSimple2);
输出:
TestSimple Constructor...!
FunTestTwo return!
TestSimple Destructor...!
请按任意键继续. . .
3.传引用
TestSimple testSimple3;
<span style="white-space:pre"> </span>FunTestThree(testSimple3);
输出:
TestSimple Constructor...!
FunTestThree return!
TestSimple Destructor...!
请按任意键继续. . .
分析:
FunTestOne(对象)在传入参数,及返回参数时,都会调用对象的拷贝构造函数;相应的,返回时都会析构两次。
即,多调用两次构造和析构函数。
FunTestTwo(指针)和FunTestThree(引用):都没有调用拷贝构造及析构函数。
结论:
对于大型程序,如果传入的对象TestSimple很大,多调用两次拷贝构造及析构函数,需要消耗大量内存资源。