知识点:1.匿名对象生命周期 2. 拷贝构造函数 3. 构造函数,析构函数的调用顺序
#include "iostream"
using namespace std;
class Triangle
{
public:
Triangle(int a, int b, int c)
{
this->a_ = a;
this->b_ = b;
this->c_ = c;
cout << "Triangle() construct " << "a=" << this->a_ << ", b=" << this->b_ << ",c=" << this->c_ << endl;
}
~Triangle()
{
cout << "Triangle() deconstruct " << "a=" << this->a_ << ", b=" << this->b_ << ",c=" << this->c_ << endl;
}
int Get_a()
{
return this->a_;
}
protected:
private:
int a_;
int b_;
int c_;
};
class MyTriangle
{
public:
MyTriangle() :tri1_(1, 2, 3), tri2_(4, 5, 6), m(100)
{
cout << "MyTriangle 构造函数" << endl;
}
~MyTriangle()
{
cout << "MyTriangle析构函数" << endl;
}
MyTriangle(const MyTriangle & obj) :tri1_(7, 8, 9), tri2_(10, 11, 12), m(100)
{
cout << "MyTriangle拷贝构造函数" << endl;
}
protected:
public:
Triangle tri1_;
Triangle tri2_;
const int m;
};
int DoWork(MyTriangle myTriangle)
{
cout <<"DoWork---成员变量a_数据是:"<< myTriangle.tri1_.Get_a() << endl;
return 0;
}
void Test()
{
MyTriangle triAngle;
DoWork(triAngle);
}
int AnonymousObj()
{
cout<<"AnonymousObjTest begin"<<endl;
Triangle(400, 500, 600);
cout << "AnonymousObjTest end" << endl;;
return 0;
}
int AnonymousObjAccepted()
{
cout << "AnonymousObjTest begin" << endl;
Triangle tri = Triangle(100, 200, 300);
cout << "AnonymousObjTest end" << endl;;
return 0;
}
int main()
{
Test();
AnonymousObj();
AnonymousObjAccepted();
cin.get();
return 0;
}