《C++学习笔记》【封装性】成员函数的说明和定义

成员函数可在类体之内、也可在类体之外被定义。规范的做法是将成员函数的说明部分(函数原型)放在类体之内,而将成员函数的定义部分放在类体之外。如下例:
class integ //用户建立的一个类
{
int j;
public:
integ( ) { j = 6; } //构造函数的定义部分
int sq( ); //成员函数的说明部分
};
int integ::sq( ) //成员函数的定义部分
{ return j*j; }
实践中,当成员函数比较短小而且没有技术秘密时,就将成员函数的定义部分也放在类定义内。如下例:
class integ //用户建立的一个类
{
int j;
public:
integ( ) { j = 6; } //构造函数的定义部分
int sq( ) { return j*j; } //成员函数的定义部分
};
当成员函数的定义部分被放在类体内时,该成员函数被称为内联函数(in-line functions,或内置函数)。
所有书上都认为内联函数具有“宏”的作用,能加快程序的运行。实际不然,至少在VC++ 6.0系统内不是这样。本系统内,内联函数不起任何作用。请看下例的两个程序inline.cpp和notinline.cpp中类的表达。前一程序使用了内联函数,后面的程序不使用内联函数。如下:
// inline.cpp全部程序
#include "iostream.h"
class base {
public:
base(int j) { x = j; }
int x;
int inc( ) { return x++; } //成员函数的定义,此为内联函数
};
void main()
{
base p(6);
cout<< "p.x is "<< p.x <<endl;
p.inc( );
cout<< "p.x is "<< p.x <<endl;
}
/* Results:
p.x is 6
p.x is 7 */

// notinline.cpp程序的不同部分
#include "iostream.h"
class base {
public:
base(int j) { x = j; }
int x;
int inc( ); //成员函数的说明而非定义
};
int base::inc( ) { return x++; }
//成员函数的定义,此非内联函数
有意思的是,这两个程序的汇编语言部分竟然完全相同。这说明至少在VC++ 6.0系统内,内联函数与非内联函数是等同的。

===============================================
未完待续,转载时请表明出处:http://www.cofftech.com/thread-1388-1-1.html
===============================================
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值