- gf24240 的博客
《梦溪笔谈·C++》卷三十四:面向对象编程
- 2025-8-21 13:49:32 @
前言
面向对象是 C++ 强大的功能。但是我们不用。
C++ 类
首先简单介绍一下面向对象(实际上我不是很懂)。
面向对象编程(简称 OOP ),是一种不同于面向过程的编程。核心思想是将数据和处理数据的方法封装,通过定义对象解决问题 。
面向对象编程有四个核心特性:
- 封装: 将数据和处理数据的方法封装起来(类似结构体)。
- 继承: 允许子类继承父类的数据和方法。
- 多态: 可以允许子类修改父类的方法。
- 抽象: 显示简单接口,隐藏复杂过程。
将数据和方法封装的东西,就叫做类。定义类的实例,叫做对象。
可以通过修饰词改变这些数据和方法的类型(例如公开和私有)。
实例实力
定义类&封装
例如我们要定义一个鸡的类。就是这样:
class chicken
{
};
注意最后的分号。现在这只鸡什么都做不了,也什么信息都没有。现在让我们为它加一点东西。
利用 private
可以设置为私有,外界无法访问。可以设置这只鸡的年龄、体重、身高(如果这些它不想告诉别人)。利用 public
可以设置为公开,外界可以访问。例如可以设置这只鸡的练习时长和身上穿的衣服(只因这是别人可以看到的)。
class chicken
{
private:
int age, weight, height;
public:
int time;
string clothes;
};
现在这只鸡就有了一些信息。但还是没什么功能。
可以利用函数来构造方法。例如可以定义一个 rap
函数让这只鸡跳舞。
class chicken
{
private:
int age, weight, height;
public:
string time = "", clothes, hobby, name;
void rap()
{
cout << "全民制作人们 大家好,\n我是练习时长" << time << "的个人练习生 " << name << ",\n喜欢" << hobby << "\n";
}
};
(神秘菜蛋)
现在这只鸡就可以说一点话了。
继承
现在这只鸡有了粉丝,它们要继承这只鸡的意志。
多定义一个 black
类表示小黑子,继承了 chicken
类 。
class black : public chicken
{
};
这样这些 black 也可以模仿鸡 rap 了。而且这些 black 也可以有自己的信息。
多态
black 们恳求 chicken 允许它们模仿改造它的歌。 chicken 同意了。
在需要重写的函数前加上 virtual
,还有在重写的函数的函数名后加上 override
,就可以重写函数了。
class chicken
{
private:
int age, weight, height;
public:
string time = "", clothes, hobby, name;
virtual void rap()
{
cout << "全民制作人们 大家好,\n我是练习时长"
<< time << "的个人练习生 " << name
<< ",\n喜欢" << hobby << "\n"
<< "\nmusic!\n"
<< "只因你太美 oh baby\n";
}
};
class black : public chicken
{
public:
void rap() override
{
cout << "全民制作人们 大家好,\n我是练习时长"
<< time << "的个人练习生 " << name
<< ",\n喜欢" << hobby << "\n"
<< "music!\n"
<< "鸡你太美!!!\n"
<< "鸡你太美!!!\n"
<< "鸡你太美!!!\n";
}
};
结果 chicken 就塌房了。