前言:
目录
一、类与对象是什么?
在之前,我们也经常讲,说C语言是面向过程的,而C++是面向对象的,那这到底又有什么区别呢,我们可以看这样一个例子:
就拿盖房子而言:
鉴于C++面向对象的特点,于是就创建出类这个概念来处理每个对象,我们可以通过类来描述每个对象的全部特点
二、类的各部分组成
1、类的定义
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语言结构体,最大的不同就是在于可以定义函数,并且有访问限定符的运用
下面我们就先来讲解一下这些细则
2、类的访问限定符及封装
通过上面的,我们可以观察到,在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;
}
这样的设计给了我们极大的操作空间,这样对于一个对象的属性,我们就可以通过操作,把我们想让别人知道的"public"出来,而不想让别人知道的就可以放在"private"或"protected"中
注意事项:
3、类的作用域
类定义了一个新的作用域 ,类的所有成员都在类的作用域中 。 在类体外定义成员时,需要使用 ::
作用域操作符指明成员属于哪个类域。
class Person
{
public:
void PrintPersonInfo();
private:
char _name[20];
char _gender[3];
int _age;
};
// 这里需要指定PrintPersonInfo是属于Person这个类域
void Person::PrintPersonInfo()
{
cout << _name << " "<< _gender << " " << _age << endl;
}
4、类的大小的计算
类在计算大小的时候,是不计算函数大小的
例如:
class A
{
public:
void Init()
{
a = 0;
size = 0;
}
void Add()
{
}
private:
int a;
int size;
};
int main()
{
cout << sizeof(A) << endl;
return 0;
}
运行结果:
没有计算函数的大小