博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
阅读量:7234 次
发布时间:2019-06-29

本文共 738 字,大约阅读时间需要 2 分钟。

c++ 类的成员函数放在类的外面来实现的写法,探究一下。

原文: 

------------------------------------------------------------------------

在上篇文章《inline的另一用处》中,提到函数实现在类定义中与类定义外的区别。

    现在先看个实验:

    a.cpp:

   

[cpp]   
 
  1. #ifndef TEST_H  
  2. #define TEST_H  
  3. class A{  
  4.     public:  
  5.     int fun(int x){  
  6.     return (x*x+1000);  
  7. }  
  8. };  
  9. #endif  
  10.   
  11. void tt()  
  12. {  
  13. }  

b.cpp:

[cpp]   
 
  1. class A{  
  2.     public:  
  3.     int fun(int x);  
  4. };  
  5. void tt();    
  6. int yy()    
  7. {    
  8.     tt();   
  9.     A a;  
  10.     return a.fun(3);    
  11. }  
  12.       

将它们分别编译后再链接:

显示链接错误,因为b.cpp(b.o)中找不到A::fun(int)的引用。

将以上的a.cpp改为如下所示:

[cpp]   
 
  1. #ifndef TEST_H  
  2. #define TEST_H  
  3. class A{  
  4.     public:  
  5.     int fun(int x);  
  6. };  
  7. #endif  
  8. int A::fun(int x){  
  9.     return (x*x+1000);  
  10. }  
  11. void tt()  
  12. {  
  13. }  

    分别编译a.cpp和b.cpp为a.o和b.o后链接,显示链接成功。

    这样,第一次链接错误的原因就很明显了。

    结论:

    在类定义中的类成员函数实现有文件内部作用域,而在类定义外部的类实现有的是全局作用域。

 

http://blog.csdn.net/tobacco5648/article/details/7651408

你可能感兴趣的文章
Oracle job调用存储过程
查看>>
Android应用程序与SurfaceFlinger服务之间的共享UI元数据(SharedClient)的创建过程分析 ....
查看>>
kettle转换和作业插件开发及调试
查看>>
基于FPGA的并行计算技术
查看>>
学习笔记 Android.mk 搜索自己主动
查看>>
jquery在元素上收购事件
查看>>
hdu 4884 TIANKENG’s rice shop(模拟)
查看>>
PC-网络教程之宽带小型组网方案
查看>>
java编程接口(5) ------ button和button组
查看>>
ActiveReport开发入门-列表的交互性
查看>>
第一pga 畸形消费分析
查看>>
float、double(浮点数)区别还有和decimal(定点数)的比较
查看>>
IM-即时通讯技术概述
查看>>
Eclipse ADT的Custom debug keystore所需证书规格
查看>>
No package mysql-server available.
查看>>
[ios]sqlite轻量级数据库学习连接
查看>>
东欧视频游戏市场概况
查看>>
它们的定义ListView,实现Item除去滑动和滑出菜单效果
查看>>
2015第我35周三
查看>>
Web前端研发工程师编程能力飞升之路
查看>>