0

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

1 回答 1

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) 静态成员函数。可以在没有对象实例的情况下访问,但不能访问任何类变量。(类变量需要一个实例。)

operator+=()编辑 1:您还可以通过实施和添加另外两个operator+()

编辑2:静态成员函数的使用

c = Vector::NonConcreteInstanceAdditionStatic(a,b);

静态成员函数类似于使用独立函数,不同之处在于它位于类内部并且必须使用范围解析运算符::, 才能访问。

于 2013-03-17T17:49:07.823 回答