C++ 是一种强大的面向对象编程语言,面向对象编程(OOP)有几个重要的基础概念,包括类、对象、封装、继承和多态,下面为你详细介绍:

  1. 类(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 类封装了矩形的属性(lengthwidth)和行为(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):封装是将数据和操作数据的函数捆绑在一起,形成一个不可分割的整体(类)。通过访问修饰符(privateprotectedpublic)来控制类成员的访问权限,隐藏对象的内部实现细节,只对外提供公共的接口。这样可以提高代码的安全性和可维护性。比如上面 Rectangle 类中,lengthwidth 被声明为 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 类定义了一个虚函数 getAreaRectangle 类和 Circle 类分别重写了这个函数。通过基类指针来调用 getArea 函数时,会根据指针实际指向的对象类型(RectangleCircle)来调用相应的 getArea 实现,这就是多态性的体现。

这些是 C++ 面向对象编程的基础概念,理解和掌握它们对于编写高效、可维护和可扩展的 C++ 程序至关重要。

1 条评论

  • @ 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