class cwin
{
private:
char id;
int width;
int height;
public:
cwin(char i,int w,int h):id(i),width(w),height(h)
{
}
cwin(&) compare(cwin &win) //以值接收 或 以參照接收
{
cout<<" &win = "<<&win<<endl;
if(this->area() >win.area())
return *this;
else if(this->area() < win.area())
return win;
else
cout<<'\t'<<"both is equality " <<endl;
}
int area(void)
{
return width*height;
}
char get_id(void)
{
return id;
}
};
int main(void)
{
cout<<endl<<endl<<endl;
cwin win1('a',30,80);
cwin win2('b',80,70);
cout<<"&win1.compare(win2) = "<<&win1.compare(win2)<<endl; //以參照接收,此列程式碼可執行,以求得物件地址.
//若compare成員函式接收的引數為以值接收,且成員函式傳回win2時,則上列傳回物件為compare成員函式接收引數中的物件,而非 win2,因此若要傳回win2,則compare成員函式接收的引數必須為以參照接收.
cout<<" &win1 = "<<&win1<<endl;
cout<<" &win2 = "<<&win2<<endl;
cout<<'\t'<<"windows "<<(win1.compare(win2)).get_id();
cout<<" is larger "<<endl;
system("pause");
return 0;
}