为什么要将成员函数的声明与定义分开,直接使用合并的成员函数不是更加方便简洁按吗?
通常来说,当我们定义了一个函数之后,编译器就会在内存中为其创建以个指令集,而当我们调用这个函数的时候,程序就会跳转到该指令集,当该函数运行完毕之后,程序又会返回到原来执行调用该函数的下一行继续执行,假如对该函数执行了上百次,那么就会来回跳转上百次,很明显这是相当影响程序执行效率的。
c++对此的解决办法是,使用关键字inline声明函数,这样的好处是编译器将不会创建真正的函数,而是将这个内联函数的所有代码拷贝到调用函数中,这样程序在执行调用该函数时就不需要来回跳转,自然就会提高程序的执行效率。
内联函数使用实例1:
#include<iostream>
using namespace std;
inline int print();//c++内联函数的定义,使用关键字inline
int print(){return 1;}//内联函数的定义
void main(){
cout<<print()<<endl;//c++内联函数的调用
}
通过使用内联函数提高了函数的运行效率,然而任何事情都是由两面性的,使用内联函数在提高效率的同时也会付出代码,就如程序调用了内联函数一百次,那么就会将内联函数的代码复制一百次,那么就要将该内联函数中的代码复制一百次,无形之中增大了程序的体积。但是假如程序很小的话我们还是可以选择内联函数的。
内联成员函数实例:
#include<iostream>
using namespace std;
class AQ//定义类
{
public:
inline void funct(int);//c++内联成员函数的声明
int get(){return x;}
private:
int x;
};
void AQ::funct(int c){x=c;}//c++内联函数的定义
int main(){
AQ aa;//声明对象
int y;
cout<<”请输入一个整数\n”;
cin>>y;
cout<<endl;
aa.funct(y);//调用c++内联函数
cout<<”您输入的数字是:”<<aa.get()<<endl;
return 0;
} 本文链接地址: c++中为什么要把成员函数的定义与声明分开