1、类、派生类
C++中类的概念很重要,重要到什么程度呢?把class/struct看成和main同一个等级,为什么这么说呢?因为,C++中不允许全局变量独立于类外,
所以,在一个C++文件中,除了头文件,就是class和main了。当然这只是其中一个原因。另外,类可以看做一种类型,和C中struct类似的一种类型。但又有一定的区别。下面具体分析。
不论是类还是派生类,都是类,具有类的属性。关于类,将从以下几个方面进行阐述:
(1)成员变量、成员函数
成员变量是与类相关的变量,成员函数是对成员变量操作的函数。关于成员变量和成员函数的认识,可以通过sizeof 来认识。sizeof是一个运算符,用于计算数据类型的大小。sizeof(int);int a = 4;sizeof a ;
a)空类、空结构体的大小为1个字节;如果只有成员函数,则还是只占用1个字节,因为类的成员函数独立于类的存储空间;
b)只含有虚函数的类的大小为4,或8(64位);
c)要注意const,static,它们存储在初始化数据区;
【总结】:类表面上包含成员函数和成员变量,但在其存储空间,只包含成员变量,成员函数独立于类的存储空间,存放在代码区。
(2)成员变量的访问方式
a、内部访问:由类中的成员函数对类的成员进行访问;(类访问)
b、外部访问:在类外,由类的对象对类的成员进行访问。(对象访问)
访问标号有三种,内部访问及友元函数可以访问类中所以成员;外部访问只能访问类的共有成员。
(3)static:作用是限定作用范围
【类外static】类外使用static其实就是C的范畴,和C中使用技巧一样。
A、static局部变量:在栈空间定义的,但是存在于全局变量区
和栈空间的局部变量比,其特点是:只初始化一次,存放地址不变,再次调用时,保持上一次的值不变。
B、static全局变量:以全局变量的方式定义,当然存在于全局变量区
和一般的全局变量相比,其特点是:不能用extern声明为引用,在其他文件中调用,保持上一次模块调用后的值
【类内static】C++特有
A、static成员变量:虽然定义在类内,但是存放在全局变量区,与对象无关,属于类;static成员变量要在类的定义外面初始化。
B、static成员函数:不含有this指针,所以不能调用本类的成员函数和成员变量,只能访问该类的静态成员变量,属于类。
此外,还要注意:
A、静态成员变量属于类,而不是属于某个特定的对象,它是由该类的所有对象共享的,因此不能在类的构造方法中初始化
B,静态成员属于该类所有对象公有,