今日、学校でC ++でメソッド/関数を記述する4つの方法を学びましたが、それぞれの概念とそれらの違いを理解しているかどうかはわかりません。それらはすべて同じことをしますか?最初のコードはクラス宣言であり、2番目のコードはクラス外の実装です。
a)
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);