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指针的问题,我们留在后面讲解,今天的学习笔记整理就先到此结束。

你可能感兴趣的:(学习,笔记,c++,开发语言)