类初步:基本概念
1 类的成员的两种类型
类的数据和成员函数有两种类型,public和private。
一般数据设为私有,对外的成员函数为公共的,某些类自己使用的函数定义为私有。
目标就是为了隐蔽性。
2 声明和使用
声明:
class Time{
private:
...
public:
...
};
注意:
i. class是关键字,说明这是类,和结构体的struct一样
ii.private和public注意后面有个冒号
iii.声明完类后有个分号
iv.类一般首字母大写,建议,非强制
使用:
Time t;
3 类和结构体的区别:
类:默认为私有private
结构体:默认为公共public
4 成员函数
一般成员函数在类体里面声明,在体外定义。
这样可以避免重复定义,比如多个文件用到这个类时,会出现重复定义。
此外,有助于接口与实现细节的分离。
5 类声明与成员函数定义的分离
通常,将类的声明写在头文件中(.h),将但是对成员函数的定义一般不放在头文件(.h)中,放在另一个.cpp文件中。
如果用户想用该类,只需要把头文件包含进来即可。
通常的做法:
头文件:类的声明,包括数据成员的定义和方法的声明
//头文件
#include <所需头文件>
clas T{
public:
void display();//公用成员函数声明
};
所需头文件>
成员函数定义:
//display.cpp
#include "T.h"//必须
#include <其他所需头文件,t.h里包含的这里不用再写>
void T::display(){
...
}
其他所需头文件,t.h里包含的这里不用再写>
主函数:
#include <其他所需头文件,t.h里面包含的不用再写>
#include "T.h"
int main(){
T t1;
t1.display();
return 0;
}
其他所需头文件,t.h里面包含的不用再写>
成员函数放在单独的文件里有如下好处:如果一个类被多次使用,那么每次使用时不必编译这个类的成员函数。成员函数只要编译一次即可。生成的目标文件可以重复使用。
6 类库
通常将多个类放在一个头文件中,形成类库。
类库包含两个部分:类声明头文件,已经编译的成员函数的定义,它是目标文件。
7 对象的存储空间
对象的存储空间只包括数据,不包括成员函数。成员函数的代码是存储在对象空间之外的。如果定义了2个对象,则2个对象的成员函数对应的是同一个函数代码段。
注意:
不论成员函数在类体里面定义还是在类外定义,其代码段都不占用对象的存储空间。
不论是否使用inline函数,成员函数代码段都不占用对象的存储空间。