C++ 类和对象

1、结构体的扩充

在C语言中,我们都学过结构体,它是一种自定义的数据类型,在结构体中我们只能定义变量 。C++语言对结构体进行了扩充,提供了一种更加安全有效的数据类型,它不仅可以在其中定义变量,还可以包含函数,这就是C++中的类。

实列说明:

//C语言中的结构体
struct student{
	int age;
	float score;
	char name[20];
}; 

//C++中的类
class complex{
	public:
		double real;
		double imag;
	private:
		void init(double r,double i)
		{
			real=r;
			imag=i;
		}
};

解析:其中class是关键字,必不可少的,相当于struct。在C++中我们把数据叫做数据成员,把函数叫做成员函数

2、类的声明

类的声明一般形式如下:

class 类名{
	public:
		公有数据成员和成员函数
	private:
		私有数据成员和成员函数
};

在C++中为了保护数据的安全,将类的成员分为三类,分别是:公有成员(用public来声明)私有成员(用private来声明)保护的成员(用protected来声明)。其中publicprivateprotected被称作为成员访问限定符

私有成员(包括成员函数和数据成员)只能被本类中的成员函数访问,而不能被类外的对象访问;公有成员既可以被类中的成员函数访问,也可以被类外的对象访问; 至于保护的成员我会在后面说到。

class的默认访问权限为privatestructpublic(因为struct要兼容C)

问题:C++中struct和class的区别是什么?
解答: C++需要兼容C语言,所以C++中struct可以当成结构体去使用。另外C++中struct还可以用来定义类, 和class是定义类是一样的,区别是struct的成员默认访问方式是publicclass的成员默认访问方式 是private

3、类的三大特性之一——封装

类的三大特性分别是:封装、继承和多态。
因为C++中的类的存在,我们将相关的成员放在同一个类中,其中数据表示类的属性,函数表示类的行为,也称为成员函数、方法或者服务。再根据提供的关键字publicprivateprotected用于声明哪些数据和函数是可以公开访问的,私用的和受保护的,这样就达到了信息隐藏的目的,即让类仅仅公开必须让外界知道的内容,而隐藏其他一切内容,这就是封装。

类的封装特性易学易用,但是不可以滥用,不要把不相干的数据和函数放在一起,什么东西都往里面塞。

4、类的实例化

用类类型创建对象的过程,称为类的实例化

(1)类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它
(2) 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量

做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什 么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。

5、如何计算类对象的大小?

计算类对象的大小其实就是计算类的大小。
想要知道一个类的大小,就要计算这个类中的数据成员的大小和成员函数的大小。但是类中定义的函数是存放在代码段的,所以一个类的大小只与类中数据成员的大小有关,与成员函数无关。

特殊:空类的大小

class A{
};              

空类的大小为1个字节,因为空类也可以被实例化。

注意:
计算类的大小也是要考虑内存对齐的,如果不会内存对齐可以看看我之前写的有关于次方面的博客。

发布了39 篇原创文章 · 获赞 7 · 访问量 2649
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章