目前对 c++ 中的 "working of classes" 非常困惑,任何人都可以通过示例提供直观的解释吗?

Currently very confused on the "working of classes" in c++, could anybody provide a intuitive explanation with examples?

我是编程新手,刚开始学习 c++ 的最低限度,有人可以提醒一下,并提供有关 c++ 中的 "working classes" 和方法的直观且易于理解的解释在程序中使用它们并将 "function" 合并到 类.
任何指向有用研究的链接 material 也很有帮助和赞赏。

在面向对象的编程语言中,class 是一个做某事的逻辑单元,class 也可以有应用程序域的名称。

例如,在数学图书馆中,您可以找到 VectorMatrix 等 class,并且可以进行 dot cross 等操作等等。这里有一个简单的、不起作用的片段:

class Vector3d {
public:   // public interface
  // constructor of the class: what happen when I create the class?    
  Vector3d() : _x{0.0}, _y{0.0}, _z{0.0} {}

  // get components
  double x() const { return _x; }
  double y() const { return _y; }
  double z() const { return _z; }

  // set components
  double x(doulbe newX) { _x = newX; }
  double y(doulbe newY) { _y = newY; }
  double z(doulbe newZ) { _z = newZ; }

  // add an operation
  Vector3d& operator+= (const Vector3d& vec)
  {
    x(vec.x());
    y(vec.y());
    z(vec.z());

    return *this;
  }

private: // hidden stuff
  double _x, _y, _z;
};

如您所见,classes 公开了一个 public 接口,并隐藏了实现。写 classes 的主要优点是你可以使用你的领域问题的词,并有像这样的表达式:

Vector3d a{1.0, 0.0, 0.0}, b{0.0, 1.0, 0.0};
auto c = a + b;
auto d = cross(a, b);

不幸的是,设计好的 classes 并不容易,它需要大量的实践和经验......有很多准则需要牢记,所有编程语言都是如此。

在可能的情况下,我通常更喜欢自由函数而不是方法,所以对于我的 Vector3d class 我将拥有像 operator+ dotcross 这样的自由函数

Vector3d opertor+ (const Vector3d& v1, const Vector3d& v2)
{
   return {v1.x() + v2.x(), v1.y() + v2.y(); v1.z() + v2.z();
}

一开始。我认为将 class 实例视为一组相关函数之间的一组共享参数是有帮助的: 所以,而不是:

fun1(a, b, c);
fun2(a, b, c, d);
fun3(a, b, c, e);

这样做:

class MyClass {
    int a;
    int b;
    int c;
public:
    MyClass(int a, int b, int c);
    int fun1();
    int fun2(int d);
    int fun3(int e);
}

 MyClass mc(a, b, c);
 mc.fun1();
 mc.fun2(d);
 mc.fun3(e);

这样你可以传递更少的参数和更少的重复代码(即重复传递 abc 到几个不同的函数,并确保它们在正确的顺序),这意味着更不容易出错的代码。