资深光能
最近小说没啥思路,所以干脆来做个面向对象编程的分享吧~
考过csp的都知道,在编程中有面向对象这个概念,但就是没人解释这个名词背后的含义。那我今天就来做个分享,算不上教程,只是单纯的分享知识(会分很多期介绍)
面向对象的概念网上一搜全都是。例如常见的java,我们正在学习的c++,都是面向对象编程。
或多或少,我们可能都在一些代码中看到过例如“class”,“private”,“public”这些词,看起来似乎很高大上。但这些都是面向对象的一部分。
在c++的面向对象编程中,我们首先要知道类这个东西,即“class”它的定义方式类似struct,功能也差不多,但我们一般用struct来表示一些变量的集合,而用class来表示变量和函数的集合。先看例子:
class student{
};
在上述例子中,我们定义了一个student类,用来存放关于一个学生的**,并对其进行处理。
我们可以为这个学生添加一些资料
class student {
string name;
struct Fraction {
int Chinese;
int math;
int English;
};
Fraction fraction;
};
可以看到,我们创建了一个Fraction结构体来表示学生的各科分数
在这个例子中,student类中的所有变量默认都为私有,即private,我们也可以手动添加private关键字
酱紫
class student {
private:
string name;
struct Fraction {
int Chinese;
int math;
int English;
};
Fraction fraction;
};
当变量为私有时,我们不能在类之外访问,所有的变量的作用域都在当前类或是该类的子类和friend类中
#include <iostream>
using namespace std;
class student {
private:
string name;
struct Fraction {
int Chinese;
int math;
int English;
};
Fraction fraction;
};
int main()
{
student s;
s.name;
return 0;
}
当你运行这段代码,你会发现s.name这一行报错,这是因为name为私有变量,不可在main函数中访问。
那有的人就要问了:如果我就想在main函数中访问变量呢?
当然有办法的,可以使用public关键字
#include <iostream>
using namespace std;
class student {
private:
string name;
struct Fraction {
int Chinese;
int math;
int English;
};
Fraction fraction;
public:
int Grade;
int Class;
};
int main()
{
student s;
cout << s.Grade << " " << s.Class;
return 0;
}
在这个例子中,我们用public关键字为该student类添加了一个班级和年级的信息,这个信息是允许访问的,我们就可以在main函数中访问并输出。
好的,回到我们之前的例子
class student {
private:
string name;
struct Fraction {
int Chinese;
int math;
int English;
};
Fraction fraction;
student()
{
fraction.Chinese = 130;
fraction.math = 150;
fraction.English = 120;
}
};
我们想要为这个学生添加各科的分数,这个时候,我们就可以使用构造函数来实现
我们通过类的名称命名了一个函数,这就是一个构造函数,这个函数默认在类生成时启动。通过这个方法,我们就可以为此学生添加分数了。当然,这只是一个例子,如果仅单个学生,你当然可以通过结构体中复制的办法为他添加成绩。
最后总结一下,面向对象编程并不能影响到最后的输出结果,但是可以为我们的编程提供便利。且方便维护,优化。上述所有的内容不使用类同样能实现。不过对于代码的统筹规划还是很重要的,毕竟没有人想写完一段代码后转眼一看发现不知道自己写了什么了~
那这次分享就先到这里吧,会看情况考虑出后续分享的~
祝大家寒假一切顺利。
陈则霖在2023-07-09 09:26:29追加了内容
ding
陈则霖在2023-07-09 09:26:35追加了内容
ding