首页 > 代码库 > C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
在上篇文章《inline的另一用处》中,提到函数实现在类定义中与类定义外的区别。
现在先看个实验:
a.cpp:
[cpp] view plain copy
- #ifndef TEST_H
- #define TEST_H
- class A{
- public:
- int fun(int x){
- return (x*x+1000);
- }
- };
- #endif
- void tt()
- {
- }
b.cpp:
[cpp] view plain copy
- class A{
- public:
- int fun(int x);
- };
- void tt();
- int yy()
- {
- tt();
- A a;
- return a.fun(3);
- }
将它们分别编译后再链接:
显示链接错误,因为b.cpp(b.o)中找不到A::fun(int)的引用。
将以上的a.cpp改为如下所示:
[cpp] view plain copy
- #ifndef TEST_H
- #define TEST_H
- class A{
- public:
- int fun(int x);
- };
- #endif
- int A::fun(int x){
- return (x*x+1000);
- }
- void tt()
- {
- }
分别编译a.cpp和b.cpp为a.o和b.o后链接,显示链接成功。
这样,第一次链接错误的原因就很明显了。
结论:
在类定义中的类成员函数实现有文件内部作用域,而在类定义外部的类实现有的是全局作用域。
http://blog.csdn.net/tobacco5648/article/details/7651408
C++成员函数实现在类定义中与在类定义外的区别(Windows下直接使用g++)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。