前言

面向对象是 C++ 强大的功能。但是我们不用。


C++ 类

首先简单介绍一下面向对象(实际上我不是很懂)。

面向对象编程(简称 OOP ),是一种不同于面向过程的编程。核心思想是将数据和处理数据的方法封装,通过定义对象解决问题

面向对象编程有四个核心特性:

  1. 封装: 将数据和处理数据的方法封装起来(类似结构体)。
  2. 继承: 允许子类继承父类的数据和方法。
  3. 多态: 可以允许子类修改父类的方法。
  4. 抽象: 显示简单接口,隐藏复杂过程。

将数据和方法封装的东西,就叫做。定义类的实例,叫做对象

可以通过修饰词改变这些数据和方法的类型(例如公开和私有)。

实例实力

定义类&封装

例如我们要定义一个鸡的类。就是这样:

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 就塌房了。