C++学习笔记(五)

      

目录

文章目录

引言

一、C++与C语言的本质区别

1.1 举个很流行的例子来区分,把大象关进柜子里

1.2 对C++来说,任何事物都可以被称为对象,每个对象都有独特的特点。属性则用来描述某个对象的特征。

        1.2.1类:

二、C++中类的封装

三、类的封装中的访问权限的问题

        3.1 C++中访问权限的分类

                3.1.1 private(私有访问权限)

                3.1.2 public(公有访问权限)

                3.1.3 protected(受保护的权限或者称为半私有权限)

四、类中私有属性的访问方法


引言

        C++学习笔记(一)-CSDN博客C++学习笔记(二)-CSDN博客C++学习笔记(三)-CSDN博客C++学习笔记(四)-CSDN博客,博主之前四篇学习笔记已经将从C语言到C++的过渡知识以及一些关键字在C语言和C++中的用法区别。

        本篇学习笔记将开启专属于C++的知识,即C++中的类的相关知识

一、C++与C语言的本质区别

        C语言是一个面向过程的语言,而C++则是面向对象的语言。

1.1 举个很流行的例子来区分,把大象关进柜子里

        在C语言中,它将这个分过程实现,每一个过程都是一个函数,即先打开柜子,再把大象放进柜子,最后关上柜子门。

        在C++中,它将这个事件分成若干个对象,即这个事件中有着大象和柜子这两个对象,除了有对象还有着行为,即打开柜子,放进大象,关闭柜子

1.2 对C++来说,任何事物都可以被称为对象,每个对象都有独特的特点。属性则用来描述某个对象的特征。

        1.2.1类:

                具有同种属性与行为的对象可以抽象成为一个类

二、C++中类的封装

        类的抽象是对具体对象进行概括和归纳,提取对象中的共同的属性和方法,形成一个抽象的模版。举个例子;

//例如我们定义一个学生的类

class Stu

{

        //首先我们抽象出学生的共有属性与行为

private:

        string name;

        int score;

public:

        void study()

        {

                cout << “好好学习,天天向上” << endl;

        }

}

 

//在主函数中我们有两种方式进行构造对象

       //一种是在堆上构造对象:

        Stu *p = new Stu();    

        p ->study();   //在堆区定义的对象时调用行为时,采用->的形式

      //另一种在栈上构造对象:

        Stu p;

        p.study();   //在栈上定义的对象时调用行为时,则采用.的形式

 

三、类的封装中的访问权限的问题

        在之前的学习笔记中,博主有介绍struct结构体中访问权限默认是public,也就是公共权限。class类正好与struct结构体相反,class类中默认的访问权限是private,即私有权限。

        3.1 C++中访问权限的分类

                3.1.1 private(私有访问权限)

                        类外的对象不可以直接访问的一种权限。

                3.1.2 public(公有访问权限)

                        类外的对象可以直接访问。

                3.1.3 protected(受保护的权限或者称为半私有权限)

                        这是一种只能在类中或者继承类中访问的权限。

四、类中私有属性的访问方法

        在上一小节中,我们介绍了私有访问权限,但是通常在写程序中不能直接给写死,要让程序变得很灵活。所以C++中提供了一种在公有权限下访问的方法,即设定set和get的方法,有点类似于java中的set和get的用法。举个例子:

//我们定义一个学生的类

class Stu

{

        //首先我们抽象出学生的共有属性与行为

private:

        string name;

        int score;

public:

        void study()

        {        

                cout << "姓名:" << name  << "分数:" << score << endl

                cout << “好好学习,天天向上” << endl;

        }

public:

        //set的用法

        void SetName(string name)

        {

                this->name = name;

        }

        void SetScore(string score)

        {

                this->score = score;

        }

        //get的用法

        string GetName()

        {

                return this -> name;

        }

        string GetScore()

        {

                return this -> score;

        }

 

//在主函数中我们有两种方式进行构造对象

       //一种是在堆上构造对象:

        Stu *p = new Stu();    

        p->SetName("xiaobai");

        p->SetScore(100);

        p ->study();     

      //另一种在栈上构造对象:

        Stu p;

        p.SetName("saodiseng");

        p.SetScore("99");

        p.study(); 

        上面的例子中利用set和get的使用,成功的对私有权限的属性进行更改。

        注意:上面的例子中出现了一个this指针的问题,我们留在后面讲解,今天的学习笔记整理就先到此结束。

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

译泽在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值