目录
1.2 对C++来说,任何事物都可以被称为对象,每个对象都有独特的特点。属性则用来描述某个对象的特征。
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指针的问题,我们留在后面讲解,今天的学习笔记整理就先到此结束。