一.

类由三部分构成:类名,数据成员和成员函数。

class 类名

{

  private:

             //私有数据成员和成员函数

  public:

            //公有数据成员和成员函数

protected:

            //受保护的数据成员和成员函数

};


1.私有成员private:

本类的成员函数或某些特殊函数(友元函数)访问,类的外部函数根本无法访问私有成员。

    private用于类声明中的第一部分,可省略关键字private。

2. 公有成员protected:

完全开放的,公有成员一般是成员函数,提供了外部程序与类的接口功能,用户通过公有成员访问该类中的数据。

3. 受保护成员 protected:

成员函数、友元、公有派生类成员函数访问的成员。受保护成员与私有成员在一般情况下含义相同,区别在于类的继承中对产生的新类的影响不同。

缺省访问控制时,系统认为是private成员。


注:

  • 由于类的公有成员提供了一个类的接口,所以一般情况下,先定义公有成员,再定义保护成员和私有成员。
  • 数据成员可以使任何数据类型,不能用自动(auto)、寄存器(register)或外部(extern)进行声明。
  • C语言的结构体只有数据成员,无函数成员。C++结构中有数据成员和成员函数。在默认情况下,结构体中的数据成员和成员函数都是公有的,在类中可以是私有的。



二. 类中成员函数的定义

类的数据成员说明对象的特征,而成员函数决定对象的行为。

类的成员函数有两种定义方法: 外联定义和内联定义

1. 外联成员函数(外联函数)

类定义中声明成员函数,在类定义体外定义成员函数。

类中声明成员函数是,所带的函数参数可以只指出其类型,而省略参数名;

类外定义成员函数是必须在函数名之前缀上类名,在函数名和类名中间加上::


void Tdate::set(int m, int d,int y)
{
  ......
}



2. 内联成员函数(内联函数,内部函数,内置函数)

程序在编译时将内联成员函数的代码插入在函数的每个调用处,作为函数体的内部扩展,用来避免函数调用机制所带来的开销,提高程序的执行效率。可以讲仅有少数几条简单语句组成,却在程序中被频繁调用的函数定义为内联函数成员。

内联成员函数有两种定义方法:在类定义体内定义,使用inline关键字。

  • 在类定义体内定义内联成员函数(隐式声明)


class Tdate
{
public:
void set(int m,int d,int y)
{
  month=m;day=d;year=y;
}
  private:
  int month;
  int day;
  int year;
};
  • 使用关键字inline定义内联成员函数(显示声明)

如果定义在类定义体外的函数使用关键字inline,可将定义在类定义体外的函数声明为内联成员函数,这时可在类定义体内相应函数的前面增加inline,将函数声明为内联成员函数。


inline void Tdate::Set(int m,int d,int y)
{
  month=m;day=d;year=y;
}