3.7日学习笔记之C++

类名::域限定符,如b.CA::fan(),继承限制符:public,如class CB :public CA,表示CB以公有方式继承CA

重载构造函数和带参构造函数的区别
重载构造函数是指在一个类中定义多个构造函数,这些构造函数具有相同的名称(类名),但参数列表不同(参数的个数、类型或顺序不同)。通过构造函数重载,可以根据不同的需求使用不同的方式来初始化对象。

#include <iostream>
class Circle {
  private:
    double radius;

  public:
    // 默认构造函数
    Circle() {
        radius = 0.0;
    }

    // 带参构造函数
    Circle(double r) {
        radius = r;
    }

    // 计算圆的面积的函数
    double area() {
        return 3.14 * radius * radius;
    }
};
int main() {
    // 使用默认构造函数创建对象
    Circle c1;
    std::cout << "c1的面积是: " << c1.area() << std::endl;

    // 使用带参构造函数创建对象
    Circle c2(5.0);
    std::cout << "c2的面积是: " << c2.area() << std::endl;

    return 0;
  }

带参构造函数是指带有参数的构造函数,它允许在创建对象时传递参数,从而可以根据不同的参数值来初始化对象的成员变量。带参构造函数的主要作用是为对象提供灵活的初始化方式。

#include <iostream>
class Rectangle {
  private:
    double length;
    double width;
  public:
    // 带参构造函数
    Rectangle(double l, double w) {
        length = l;
        width = w;
    }

    // 计算矩形面积的函数
    double area() {
        return length * width;
    }
};
int main() {
    // 创建Rectangle对象,并传递参数进行初始化
    Rectangle rect(5.0, 3.0);
    std::cout << "矩形的面积是: " << rect.area() << std::endl;
    return 0;
}

虚函数的作用为了实现多态,纯虚函数不能实例化。

#include <iostream>
// 基类
class Shape {
public:
    // 虚函数
    virtual void draw() {
        std::cout << "绘制一个形状" << std::endl;
    }
};

// 派生类
class Circle : public Shape {
public:
    // 重写基类的虚函数
    void draw() override {
        std::cout << "绘制一个圆形" << std::endl;
    }
};

// 派生类
class Square : public Shape {
public:
    // 重写基类的虚函数
    void draw() override {
        std::cout << "绘制一个正方形" << std::endl;
    }
};
// 抽象类
class Animal {
public:
    // 纯虚函数
    virtual void action() = 0;
};
// 派生类
class Dog : public Animal {
public:
    // 实现纯虚函数
    void action() override {
        std::cout << "小狗会汪汪" << std::endl;
    }
};
int main() {
    Circle circle;
    Square square;
    //Animal animal;  //错误,抽象类不能实例化
    Dog dog;
    Animal *animal=&dog;
    //或者这样写
/*    Animal *animal;
    animal=new Dog();
*/
    // 基类指针指向派生类对象
    Shape* shape1 = &circle;
    Shape* shape2 = &square;

    // 调用虚函数,根据对象的实际类型调用相应的函数
    shape1->draw(); 
    shape2->draw(); 
    
    animal->action();
    return 0;
}
posted @ 2025-03-08 09:52  小智001  阅读(4)  评论(0)    收藏  举报