成员函数可在类体之内、也可在类体之外被定义。规范的做法是将成员函数的说明部分(函数原型)放在类体之内,而将成员函数的定义部分放在类体之外。如下例:
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
===============================================
分享到:
相关推荐
c++学习笔记/知识要点精华版
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记
08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通成员函数的内部处理08_29_C++ C++编译器对普通...
c++学习笔记.pdf
C++学习笔记--函数指针 函数指针 程序运行期间。每个函数都会占用一段连续的内存空间。而函数名就是该函数所占内存区域的起始地址(也称“入口地址”)。我们可以将函数入口地址赋给一个指针变量,使该指针变量...
C++函数声明和定义 声明是告诉编译器一些信息,以协助编译器进行语法分析,避免编译器报错。而定义是告诉编译器生成一些代码,并且这些代码将由连接器使用。即:声明是给编译器用的,定义是给连接器用的。这个说明...
C++学习笔记C++学习笔记C++学习笔记C++学习笔记C++学习笔记
C++学习笔记
c++完美学习笔记c++完美学习笔记c++完美学习笔记c++完美学习笔记
C++学习笔记.docx
【C++学习笔记】一份详细的学习笔记,让你轻松掌握C++编程!
C++学习笔记: 以学习、思考、记录、分享为乐。
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记002
一般地,线程要读写类的私有成员变量,只有两种方法:将全局函数声明为类友元friend,或者使用静态的成员函数static。那非静态的成员函数呢?一般地方都说的是,不行,做不了。。。为什么不行?都是代码区的代码,...
C++学习笔记
C++ 线程函数是类的成员函数 C++ 线程函数是类的成员函数
C++基础的学习笔记(其中的代码源件可私信留言) C++中的空头程序 使用C++书写hello world 学习变量 学习常量 标识符命名规则 数据类型 运算符 程序流程结构 数组 函数 指针 结构体
面向对象程序设计C++详细实验报告 含代码,结果 实验要求: (1) 将数据成员改为私有的; (2) 将输入和输出的功能改为由成员函数实现; (3) 在类体内声明成员函数,而在类外定义成员函数。
C++将类的成员函数作为回调函数使用介绍
C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记C++ 学习笔记003