今天在学校我们学习了用C ++编写方法/函数的四种方法,但我不确定我是否理解每种方法的概念以及它们之间的区别。他们都做同样的事吗?第一个代码是类声明,第二个代码是类外的实现:
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);
答案 0 :(得分:1)
你忘了更多:
(独立,按参数返回)
void Addition (const Vector& a, const Vector& b, Vector & result)
{
result.x = a.x + b.x;
result.y = a.y + b.y;
return;
}
在main
函数中:
Addition(a, b, c);
使用const
并通过引用传递也有变化。
回答:
a)会员职能;可以使用没有this->
的类变量
修改“托管”实例的成员变量。
b)会员职能;不修改实例变量。
c)具有访问类中方法和变量的权限的自由站立功能。
d)静态成员函数。可以在没有对象实例的情况下访问,但无法访问任何类变量。 (类变量需要一个实例。)
编辑1:
您还可以通过实施operator+=()
和operator+()
添加两个。
编辑2:使用静态成员函数
c = Vector::NonConcreteInstanceAdditionStatic(a,b);
静态成员函数就像使用独立函数一样,除了它在类的内部并且必须使用范围解析运算符::
来访问。