学科分类
目录
C++基础

类的成员

类是事物的抽象描述,若想定义类就需要抽象出事物的属性及方法。比如,若想描述人,则表示人的类中就应该有性别、年龄、身高等属性,以及行走、说话等方法。描述汽车类就应该有长宽、颜色、品牌等属性,以及前进、倒车、转弯等方法。类的属性及方法,或者说类的数据成员及成员函数共同描述了类的完整定义,如图1描述了汽车类的成员。

图1 汽车类成员描述

从图1中看出,汽车类中的数据成员和成员函数共同描述了汽车具有的特性。

接下来将上一小节中定义的汽车类描述的更加完善,代码如下所示:

class Car                                          //定义类Car
{   
    //成员函数
    public:                                        //public访问限定符
        void disp_welcomemsg()                     //定义类成员函数,显示欢迎信息
        {
            cout << "Welcome to the car world!" << endl;
        }
        int get_wheels()                            //定义类成员函数,获取车轮数量
        {
            return m_nWheels;
        }
    //数据成员
    private:                                         //private访问限定符
       int m_nWheels;                                //描述车轮数量的数据成员
       int m_nSeats;                                 //描述座位数量的数据成员
       int m_nLength;                                //描述汽车长度的数据成员
};

上述代码中,定义了成员函数disp_welcomemsg()、get_wheels(),可以看出,成员函数和普通函数的定义形式相同。另外,本类中还定义了数据成员,这里通过变量m_nWheels、m_nSeats、m_nLength描述了车轮数量、座位数量和汽车长度。

从代码中还可以看出,不论是成员函数还是数据成员都由访问限定符描述它们的访问属性,通常数据成员具有private属性,实现数据隐藏,成员函数具有public属性,方便完成调用。

在这个汽车类中我们是在类内定义成员函数的,其实成员函数还可以仅在类中声明,类外实现。若在类外定义成员函数,必须在函数名前加上类名,类名后加作用域限定符“::”,表示函数属于哪个类,其形式如下所示:

函数返回值类型 类名::成员函数名称(参数表)
{
    函数体
}

若函数名前没有类名和作用域运算符“::”,则表示函数不是类中的成员函数,是普通函数。

接下来通过改写Car类的定义,将成员函数在类外实现,代码如下所示:

class Car                                         //定义类Car
{
    public:                                               
       void disp_welcomemsg();                    //声明disp_welcomemsg()函数
        int get_wheels();                         //声明get_wheels()函数
    private:                                             
       int m_nWheels;                                      
       int m_nSeats;                                       
       int m_nLength;                                      
};
//类外定义成员函数
void Car::disp_welcomemsg()                       //类成员函数disp_welcomemsg()的实现
{
    cout << "Welcome to the car world!" << endl;
}
int Car::get_wheels()                             //类成员函数get_wheels()的实现
{
     return m_nWheels;
}

从上述代码可以看出,成员函数disp_welcomemsg()、get_wheels()若定义在类外,类内必须有该函数的声明,类外定义成员函数需要由类名和作用域运算符进行限定。

点击此处
隐藏目录