標籤:
/**********************************************************************
* main.cpp
* Compiler: GCC,VS,VC6.0 win32
* Author:WK
* Time: 2015 3 29
************************************************************************/
#include<iostream>
using namespace std;
class Coord
{
public:
Coord(int a=0,int b=0);
Coord(const Coord &p);
~Coord();
void print();
int getx();
int gety();
private:
int x,y;
};
void Coord::print()
{
cout<<x<<" "<<y<<‘\n‘;
}
int Coord::getx()
{
return x;
}
int Coord::gety()
{
return y;
}
Coord::Coord(int a,int b)
{
x=a;
y=b;
cout<<"這裡只是為了驗證建構函式運行了\n";
}
Coord::~Coord()
{
cout<<"這裡只是為了驗證解構函式運行了\n";
}
Coord::Coord(const Coord &p)
{
x=p.x;
y=p.y;
cout<<"這裡只是為了驗證拷貝建構函式運行了\n";
}
//普通函數
Coord fun (Coord p)
{
cout<<"這裡只是為了驗證fun()函數運行了\n";//5.列印出
int a,b;
a=p.getx()+10;
b=p.gety()+20;
Coord r(a,b);//6.調用自訂建構函式給對象r的資料成員分配記憶體並初始化
return r; //7.這裡把r的值調用自訂拷貝建構函式賦給系統產生的無名函數用於返回
}
//8.退出fun()函數時候調用自訂解構函式釋放形參p
//9.函數時候調用自訂解構函式釋放函數體內定義的對象r
//10.調用自訂解構函式釋放系統自己產生的無名對象
int main()
{
Coord p1(30,40);//1.調用自訂建構函式給對象p1的資料成員分配記憶體並初始化
Coord p2; // 2.調用自訂預設建構函式給對象p2資料成員分配記憶體並初始化為預設值
Coord p3(p1); //3.調用自訂拷貝建構函式用p1代入法初始化p3並給p3對象資料成員分配記憶體
p2=fun(p3); //4.進入fun()函數先把實參p3對象調用自訂拷貝建構函式初始化fun()的形參
//這裡p2接受了那個無名對象返回的值
p2.print();//11.輸出
return 0;
}//退出main()函數時候就會依次反著調用自訂解構函式來分別釋放p3,p2,p1
對一個程式的思考5(C++各種函數調用)