今天在學校,我們學習了用C++編寫方法/函數的四種方法,但我不確定我理解每種方法的概念以及它們的不同之處。他們都做同樣的事情嗎?第一代碼是類聲明,和第二代碼是類的外部實現:四種用C++編寫方法/函數的方法?
一個)
1) Vector Addition(Vector a);
2) Vector Vector::Addition(Vector a)
{
Vector temp = *this;
temp.x+=a.x;
temp.y+=a.y;
return temp;
}
B)
1)Vector ConcreteInstanceAddition(Vector a, Vector b);
2) Vector Vector::ConcreteInstanceAddition(Vector a, Vector b)
{
Vector temp=*this;
temp.x=a.x+b.x;
temp.y=a.y+b.y;
return temp;
}
C)
1) friend Vector NonConcreteInstanceAddition(Vector a, Vector b);
2) Vector NonConcreteInstanceAddition(Vector a, Vector b)
{
Vector temp(0,0);
temp.x=a.x+b.x;
temp.y=a.y+b.y;
return temp;
}
d)
1) static Vector NonConcreteInstanceAdditionStatic(Vector a, Vector b);
2) Vector Vector::NonConcreteInstanceAdditionStatic(Vector a, Vector b)
{
Vector temp(0,0);
temp.x=a.x+b.x;
temp.y=a.y+b.y;
return temp;
}
而且這是在主函數中實現:
Vector a(0,0),b(0,0),c(0,0);
c=a.Addition(b);
//or
c.ConcreteInstanceAddition(a,b);
//or
c=NonConcreteInstanceAddition(a,b);
//or
c=Vector::NonConcreteInstanceAdditionStatic(a,b);
你的第二個例子不能編譯。這基本上是「靜態」和「朋友」的問題。 – chris 2013-03-17 17:40:29
請詳細解釋一下。對不起,如果這是一個問題。我是一個初學者,所以告訴我,如果一切聽起來很愚蠢或邏輯錯誤:D – A6SE 2013-03-17 17:46:36