- C++
C++ 面向对象基础
- 2025-4-17 21:36:22 @
C++ 是一种强大的面向对象编程语言,面向对象编程(OOP)有几个重要的基础概念,包括类、对象、封装、继承和多态,下面为你详细介绍:
- 类(Class):类是一种用户自定义的数据类型,它是对具有相同属性和行为的对象的抽象描述。在 C++ 中,使用
class
关键字来定义类。例如:
class Rectangle {
private:
double length;
double width;
public:
// 构造函数
Rectangle(double l, double w) : length(l), width(w) {}
// 成员函数,计算矩形面积
double getArea() {
return length * width;
}
};
在这个例子中,Rectangle
类封装了矩形的属性(length
和 width
)和行为(getArea
函数)。private
关键字表示这些成员变量只能在类内部访问,public
关键字表示成员函数可以在类外部访问。
2. 对象(Object):对象是类的一个实例,通过类可以创建多个对象。创建对象时,实际上是为对象分配内存空间,并调用构造函数进行初始化。例如:
int main() {
Rectangle rect(5.0, 3.0); // 创建一个 Rectangle 类的对象 rect
double area = rect.getArea(); // 调用对象的成员函数计算面积
std::cout << "矩形的面积是: " << area << std::endl;
return 0;
}
这里创建了一个 Rectangle
类的对象 rect
,并通过它调用 getArea
函数来计算矩形的面积。
3. 封装(Encapsulation):封装是将数据和操作数据的函数捆绑在一起,形成一个不可分割的整体(类)。通过访问修饰符(private
、protected
、public
)来控制类成员的访问权限,隐藏对象的内部实现细节,只对外提供公共的接口。这样可以提高代码的安全性和可维护性。比如上面 Rectangle
类中,length
和 width
被声明为 private
,外界不能直接访问,只能通过类提供的 public
成员函数(如 getArea
)来间接操作。
4. 继承(Inheritance):继承是指一个类(子类或派生类)可以继承另一个类(父类或基类)的属性和行为。子类可以重用父类的代码,并且可以添加新的属性和行为或重写父类的方法。使用 :
来表示继承关系。例如:
class Square : public Rectangle {
public:
Square(double side) : Rectangle(side, side) {}
};
这里 Square
类继承自 Rectangle
类,它继承了 Rectangle
类的属性和方法,并且通过构造函数初始化一个特殊的矩形(边长相等的正方形)。
5. 多态(Polymorphism):多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。C++ 中的多态主要通过虚函数和函数重载来实现。虚函数允许子类重写父类的函数,在运行时根据对象的实际类型来调用相应的函数。例如:
class Shape {
public:
virtual double getArea() {
return 0.0;
}
};
class Circle : public Shape {
private:
double radius;
public:
Circle(double r) : radius(r) {}
double getArea() override {
return 3.14 * radius * radius;
}
};
int main() {
Shape* shape1 = new Rectangle(4.0, 6.0);
Shape* shape2 = new Circle(5.0);
std::cout << "矩形的面积: " << shape1->getArea() << std::endl;
std::cout << "圆的面积: " << shape2->getArea() << std::endl;
delete shape1;
delete shape2;
return 0;
}
在这个例子中,Shape
类定义了一个虚函数 getArea
,Rectangle
类和 Circle
类分别重写了这个函数。通过基类指针来调用 getArea
函数时,会根据指针实际指向的对象类型(Rectangle
或 Circle
)来调用相应的 getArea
实现,这就是多态性的体现。
这些是 C++ 面向对象编程的基础概念,理解和掌握它们对于编写高效、可维护和可扩展的 C++ 程序至关重要。
1 条评论
-
admin SU @ 2025-4-17 21:42:04
#include<iostream> using namespace std; class student{//class类 struct结构体 //private: private: double ccc; public: int id; double math; double eng; double getCcc(){ return ccc; } void setCcc(double ccc){ this->ccc = ccc; } }; int main() { student s1;//对象、实例 结构体变量 //s1.ccc = 123; s1.setCcc(35); cout<<s1.getCcc()<<endl; return 0; }
- 1