在C+中编写方法/函数的四种相同方法+;? 今天我们在C++中学习了写方法/函数的四种方法,但是我不确定我理解了每个概念的概念以及它们的不同之处。他们都做同样的事吗?。第一个代码是类声明,第二个代码是类外的实现:

在C+中编写方法/函数的四种相同方法+;? 今天我们在C++中学习了写方法/函数的四种方法,但是我不确定我理解了每个概念的概念以及它们的不同之处。他们都做同样的事吗?。第一个代码是类声明,第二个代码是类外的实现:,c++,oop,class,function,methods,C++,Oop,Class,Function,Methods,(a) (b) (c) (d) 这是主要功能的实现: 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); 您还忘了一些: (独立,按参数返回) 在主功能中: Addition(a, b,

(a)

(b)

(c)

(d)

这是主要功能的实现:

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);
您还忘了一些:
(独立,按参数返回)

主功能中:

Addition(a, b, c);
使用
const
和通过引用传递也有一些变化

答案:
a) 成员函数;可以在不使用
此->
的情况下使用类变量
修改“宿主”实例的成员变量

b) 成员函数;不修改实例变量

c) 具有访问类中的方法和变量权限的独立函数

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

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

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

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

静态成员函数类似于使用独立函数,只是它位于类内部,必须使用作用域解析运算符
,才能访问

您的第二个示例无法编译。这基本上是一个关于
静态
朋友
的问题。请更深入地解释一下。如果这是个问题,很抱歉。我是一个初学者,所以告诉我,如果每件事听起来都很愚蠢或不合逻辑:很多。我使用了第二个,像这样的c=c.ConcreteInstanceAddition(a,b);现在它可以工作了。然而,我并不完全理解第四个函数。请告诉我如何在主功能中使用它。如果这个答案有帮助,请检查它。
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);
void Addition (const Vector& a, const Vector& b, Vector & result)
{
   result.x = a.x + b.x;
   result.y = a.y + b.y;
   return;
}
Addition(a, b, c);
c = Vector::NonConcreteInstanceAdditionStatic(a,b);