返回

和对象的基本概念(C++基础)

后端







## C++中的结构体和类

在C++中,结构体和类几乎是一样的。CC++中的结构体的区别:

- C中没有类,而C++中有了类。
- C中的结构体是值类型,而C++中的类是引用类型。
- C++中的类可以有虚函数,而C中的结构体没有。
- C++中的类可以有访问控制,而C中的结构体没有。

C++中的类比结构体更强大,可以用于更加复杂的程序。

## 结构体和类的成员

结构体和类都可以有成员变量和成员函数。成员变量是结构体或类的数据,而成员函数是结构体或类的方法。

例如,以下是一个简单的结构体:

```cpp
struct Point {
  int x;
  int y;
};

这个结构体有两个成员变量:x和y。

以下是一个简单的类:

class Point {
public:
  int x;
  int y;

  void move(int dx, int dy) {
    x += dx;
    y += dy;
  }
};

这个类有两个成员变量:x和y,还有一个成员函数:move。

继承

继承是C++中的一种重要特性,它允许一个类从另一个类继承成员变量和成员函数。

例如,以下是一个继承自Point类的类:

class ColoredPoint : public Point {
public:
  int color;

  void draw() {
    // ...
  }
};

这个类继承了Point类的所有成员变量和成员函数,并添加了新的成员变量color和成员函数draw。

封装

封装是C++中的一种重要特性,它允许将数据和方法绑定在一起,从而形成一个单一的实体。

例如,以下是一个封装了Point类和ColoredPoint类的模块:

module PointModule {
public:
  using Point = ::Point;
  using ColoredPoint = ::ColoredPoint;
};

这个模块将Point类和ColoredPoint类封装在一个命名空间中,从而可以方便地访问这些类。

多态

多态是C++中的一种重要特性,它允许一个对象可以有多种不同的行为。

例如,以下是一个使用多态的示例:

void drawShape(Shape* shape) {
  shape->draw();
}

class Shape {
public:
  virtual void draw() {
    // ...
  }
};

class Point : public Shape {
public:
  void draw() override {
    // ...
  }
};

class ColoredPoint : public Point {
public:
  void draw() override {
    // ...
  }
};

int main() {
  Shape* shape = new Point();
  drawShape(shape);

  shape = new ColoredPoint();
  drawShape(shape);

  return 0;
}

在这个示例中,drawShape函数可以接收任何类型的Shape对象,并调用该对象的draw方法。这意味着,我们可以使用相同的代码来绘制不同的形状,而不需要关心这些形状的具体类型。

总结

在本文中,我们探讨了C++中和对象的基本概念,包括结构体、类、成员变量、成员函数、继承、封装和多态等。这些概念是C++中最基本的概念,掌握了这些概念,您就可以编写出更加复杂的程序。