问题标题: 面向对象编程介绍(c++)

2
0
已解决
陈则霖
陈则霖
资深光能
资深光能

最近小说没啥思路,所以干脆来做个面向对象编程的分享吧~

 

考过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


0
已采纳
陈俊霖
陈俊霖
新手天翼
新手天翼

你咋不写小说了?

 

0
左文彬
左文彬
新手光能
新手光能

你洛谷上个线啊🥴🥴🥴

0
0
薛乘志
薛乘志
初级启示者
初级启示者

不建议将成员变量直接设置为public,应使用getter/setter函数

 

0
0
0
刘小川
刘小川
中级天翼
中级天翼

开头看时:enen都学过

看完结尾:enen没学过了

0
我要回答