类初步:基本概念

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(){
...
}

主函数:

#include <其他所需头文件,t.h里面包含的不用再写>

#include "T.h"

int main(){

   T t1;

   t1.display();

   return 0;

}

成员函数放在单独的文件里有如下好处:如果一个类被多次使用,那么每次使用时不必编译这个类的成员函数。成员函数只要编译一次即可。生成的目标文件可以重复使用。

6 类库

通常将多个类放在一个头文件中,形成类库。

类库包含两个部分:类声明头文件,已经编译的成员函数的定义,它是目标文件。

7 对象的存储空间

对象的存储空间只包括数据,不包括成员函数。成员函数的代码是存储在对象空间之外的。如果定义了2个对象,则2个对象的成员函数对应的是同一个函数代码段。

注意:

不论成员函数在类体里面定义还是在类外定义,其代码段都不占用对象的存储空间。

不论是否使用inline函数,成员函数代码段都不占用对象的存储空间。