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 = □
// 调用虚函数,根据对象的实际类型调用相应的函数
shape1->draw();
shape2->draw();
animal->action();
return 0;
}

浙公网安备 33010602011771号