在C ++中编写方法/函数的四种相同方法?

时间:2013-03-17 17:38:33

标签: c++ oop class function methods

今天在学校我们学习了用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);

1 个答案:

答案 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);

静态成员函数就像使用独立函数一样,除了它在类的内部并且必须使用范围解析运算符::来访问。