返回
和对象的基本概念(C++基础)
后端
2024-02-12 22:30:18
## C++中的结构体和类
在C++中,结构体和类几乎是一样的。C和C++中的结构体的区别:
- 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++中最基本的概念,掌握了这些概念,您就可以编写出更加复杂的程序。