前言:
在前面,我们已经初步学习了C++的一些基本语法,比如内敛函数、函数重载、缺省参数、引用等等,接下来我们就将正式步入C++的神圣殿堂,首先,先给你找个对象
目录
在之前,我们也经常讲,说C语言是面向过程的,而C++是面向对象的,那这到底又有什么区别呢,我们可以看这样一个例子:
就拿盖房子而言:
面向过程其实就是一步步将房子盖起来,从打地基到垒墙再到封顶的整个过程应该如何去实现
而面向对象则是将盖房子所需要的东西找出来即可,比如人、水泥、砖块等等
鉴于C++面向对象的特点,于是就创建出类这个概念来处理每个对象,我们可以通过类来描述每个对象的全部特点
C++中的类与C语言中的结构体是十分相似的,都是将一些数据定义在一起,使得他们具有联系,
C++中的类是由struct和class引入的,他们的用法如下:(后面会做解释)
struct:
- struct Std
- {
- int a;
- char b;
- void Init()
- {
- a = 0;
- b = '0';
- }
- };
class:
- class A
- {
- public:
- void Init()
- {
- a = 0;
- size = 0;
- }
- private:
- int a;
- int size;
- };
通过上面这两个举例,我们可以看出,C++中对类的引用,相较于C语言结构体,最大的不同就是在于可以定义函数,并且有访问限定符的运用
下面我们就先来讲解一下这些细则
通过上面的,我们可以观察到,在class的举例中有public和private,这两个东西其实就是C++类中的访问限定符,这样的访问限定符有三个:public、private、protected
其中公有和保护私有的区别就是能否被外界直接访问,例如这样一个程序
- class A
- {
- public:
- void Init()
- {
- a = 0;
- size = 0;
- }
- void Add()
- {
-
- }
- private:
- int a;
- int size;
- };
- int main()
- {
- A a;
-
- return 0;
- }
我们创建了一个名字为a的类对象,在类中我们在pubic中定义了两个函数,在private中定义了两个整形变量,现在我们通过类外定义的这个类对象a去访问类中元素,看会有什么有趣的事情发生
当我们访问时,我们可以发现我们只能访问到public中的两个函数,而对于private中的两个整形变量则访问不到,这其实是因为private中的变量是受保护的,只能在类中进行访问,外界要想直接访问是做不到的
这样的设计给了我们极大的操作空间,这样对于一个对象的属性,我们就可以通过操作,把我们想让别人知道的"public"出来,而不想让别人知道的就可以放在"private"或"protected"中
注意事项:
1、private和protected区别不大,大部分情况下可以换着用,不同之处等以后学到再讲
2、struct默认类中变量是public的
3、class默认类中变量是private的
- class Person
- {
- public:
- void PrintPersonInfo();
- private:
- char _name[20];
- char _gender[3];
- int _age;
- };
- // 这里需要指定PrintPersonInfo是属于Person这个类域
- void Person::PrintPersonInfo()
- {
- cout << _name << " "<< _gender << " " << _age << endl;
- }
类在计算大小的时候,是不计算函数大小的
例如:
- class A
- {
- public:
- void Init()
- {
- a = 0;
- size = 0;
- }
- void Add()
- {
-
- }
- private:
- int a;
- int size;
- };
- int main()
- {
- cout << sizeof(A) << endl;
- return 0;
- }
运行结果: