首页 > 编程知识 正文

虚函数不得是静态成员函数,内联函数和成员函数的区别

时间:2023-05-06 02:52:41 阅读:166647 作者:2225

C声明或定义的函数为4种作用域:

默认全局函数内联函数,即inline函数的外部函数,即extern函数的静态函数,即static函数内联函数:

inline函数

在文件范围内由inline说明或定义的局部函数

是将函数体代码直接插入主调函数调用位置,而不是函数调用。提高执行效率的函数

调用函数时,除了函数主体对应的计算指令外,还需要完成参数的传递、寄存器的保存、寄存器的恢复等操作。 这些操作是计算指令以外的操作和开销,真正用于函数主体计算的指令很少。 在这种情况下,可以使用内联函数由编译器将函数调用指令替换为函数体计算指令来减少调用开销,提高执行效率。

//计算圆的面积和周长inline double PI=3.1416; inlinedoubleperimeter(doubler; //内联函数声明在inlinedoublearea(doubler ) /中添加inline,相当于在函数之前添加静态,因此只能在当前代码文件中调用此函数。 (//注意:内部包含inline变量return PI*r*r; }void main () {double a; 双p; p=Perimeter(10.0; //内联失败,函数定义在调用后出现的a=area(10.0 ); //内联成功,m=3.1416 * 10.0 * 10.0 }双精度参数(doubler ) /内联函数定义({return 2*PI*r; } 注:

内联函数内部不能使用引起分支、循环、多分支或函数调用等转移的语句。 或调用指令

外部函数:

使用由关键字extern限定的函数,

声明函数时,不能直接定义函数主体。

c语言函数作用域:

1 )全局函数,即可以访问或调用任何代码文件的函数

2 )静态函数

外部函数可以是全局函数静态函数

可以使用关键字extern引用在一个文件中在另一个文件中定义的变量或函数

在同一文件中:

intsum(m,n ); void main () {cout num; //这样写的话,编译器找不到num,可以在错误报告sum(2,num )的//sum函数中使用。 num的声明在调用之前}int num; intsum(m,n ) {return m n; 这时,我们可以这样写:

intsum(m,n ); void main () {extern int num; //此时,可以使用后面定义的变量cout num; sum(2,num ); (}int num=3; intsum(m,n ) {return m n; }在两个文件中:

a.cpp

int num=10; int sum () {return num num; } main.cpp

void main () {extern int num; //如果不想更改变量,请安装const,使其成为extern const int num; extern int sum (; //此时可以调用a.cpp内的变量和函数num=5修改变量值cout num; cout sum (; } 静态函数:

静态限定的函数的范围仅限于当前代码文件,并且只能从当前代码文件中的函数访问或调用。

代码文件:cpp

目标文件:obj

静态链接库文件:lib

动态链接库文件:dll

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。