C++类的成员函数

1 C++类的成员函数

1.1 C++类成员函数的性质

       类的成员函数是函数的一种,它的用法和作用和一般函数基本上是一样的,它也有返回值和函数类型。它与一般函数的区别只是:它是属于一个类的成员,出现在类体中。它可以被指定为private(私有的),public(公用的)或protected(受保护的)。

       在使用类成员函数的时候,要注意调用它的权限(即,它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数)。例如,私有的成员函数只能被本类中的其他成员函数所调用,而不能被类外调用。成员函数可以访问本类中任何成员(包括私有的和公用的),可以引用在本作用域中有效的数据。

       所以,定义类的成员函数时,可以将需要被外界调用的成员函数指定为public,它们是类的对外接口。但应注意,并非要求把所有成员函数都指定为public。有的函数并不是准备为外界调用的,而是为本类中的成员函数所调用的,就应该将它们指定为private。

       类的成员函数是类体中十分重要的部分,如果一个类中不包含成员函数,就等同于C语言中的结构体类,体现不出类在面向对象程序设计中的作用。

1.2 在类外定义成员函数

       前面看到的成员函数是在类体中定义的,那么,也可以在类体中只写成员函数的声明,而在类外面进行函数定义,例如:

class student       //class开头

{

private:    //以下的部分是私有部分

    char name[32];

    char addr[32];

    long long number;//以上3 行是成员变量

public:     //以下部分是公有部分

    student(char* pn, char* pa, long long n)

    {

        strcpy(name, pn);

        strcpy(addr, pa);

        number = n;

    }

    void print();       //这是成员函数

};

void student::print()       //这是成员函数

{

    cout << "name = " << name << endl;

    cout << "addr = " << addr << endl;

    cout << "number = " << number << endl;

}

       注意:在类体中直接定义函数时,不需要在函数名前面加上类名,因为函数就属于当前定义该函数的类。但成员函数在类外定义的时候,必须在函数名前面加上类名,“::”是作用域限定符或称作用域运算符,用它声明函数是属于哪个类的。

例如,student::print() 表示作用域为student类的print()函数,也就是student类中的print()函数。如果没有“student::”的限定,print()指的是它所在的作用域中的print()函数,就是一个普通的函数,不属于student类。对上面程序段而言,就是指全局作用域中的print()函数,而不是student类中的print()函数。而且不同的类中可能有同名的函数,用作用域限定符加以限定,就明确地说明了是哪一个作用域的函数,也就是哪一个类的函数。

       如果在作用域运算符“::”的前面没有类名,或者函数名前面既无类名,又无作用域运算符“::”,如:

::print()          或          print()

就表示 print() 函数不属于任何类,这个函数不是成员函数,而是全局函数,即非成员函数的一般普通函数。

       类函数必须先在类体中作原型声明,然后,在类外定义,也就是说类体的位置应在函数定义之前(如上面所示的那样),否则编译时会出错。

       虽然函数在类外部定义,但在调用成员函数时会根据在类中声明的函数原型找到函数的定义(函数代码),从而执行该函数。

韦凯峰 Linux C/C++ 程序设计教程,Linux 系统编程,Openwrt 系统开发,微信:13926572996,QQ:1523520001,博客:www.mylinux.vip

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

韦凯峰Linux编程学堂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值