C++:成员函数实现在类定义中与在类定义外的区别
来源:互联网 发布:医疗大数据面临的问题 编辑:程序博客网 时间:2024/06/09 22:49
在上篇文章《inline的另一用处》中,提到函数实现在类定义中与类定义外的区别。
现在先看个实验:
a.cpp:
#ifndef TEST_H#define TEST_Hclass A{public:int fun(int x){return (x*x+1000);}};#endifvoid tt(){}
b.cpp:
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改为如下所示:
#ifndef TEST_H#define TEST_Hclass A{public:int fun(int x);};#endifint A::fun(int x){return (x*x+1000);}void tt(){}
分别编译a.cpp和b.cpp为a.o和b.o后链接,显示链接成功。
这样,第一次链接错误的原因就很明显了。
结论:
在类定义中的类成员函数实现有文件内部作用域,而在类定义外部的类实现有的是全局作用域。
- C++:成员函数实现在类定义中与在类定义外的区别
- !!!!!!!!!!!!!!!!C++:派生类中重定义基类的成员函数与虚函数区别在哪里?
- C++ 类的成员函数定义在.h中为什么会产生函数重定义错误?
- C++类的成员函数(在类外定义成员函数、inline成员函数)
- C++类的成员函数(在类外定义成员函数、inline成员函数)
- C++类的成员函数(在类外定义成员函数、inline成员函数)
- C++类的成员函数(在类外定义成员函数、inline成员函数)
- C++类的成员函数(在类外定义成员函数、inline成员函数)
- C++模板类的成员函数定义与声明必须在一个头文件中
- 在C++中定义类成员函数指针
- 在类外定义的函数,被成员函数调用时,报运行时错误error LNK2005:已经在 classinfo.obj 中定义
- 在c语言中函数的定义与使用
- C++类的内联成员函数在哪定义
- 函数模板和类模板成员函数的定义通常放在头文件中
- <C++>9.类成员函数的定义
- static成员变量在类的定义体中初始化
- c++中在类外定义函数
- c++中在类外定义函数
- CPU-缓存-内存+GPU-显存+效率+速度+执行
- Java对象的强、软、弱和虚引用
- iSCSI的架设与使用
- Spring核心(四)AOP介绍
- 编程小技巧
- C++:成员函数实现在类定义中与在类定义外的区别
- input文本框文字垂直居中
- 输出1到最大的N位数
- 软解&硬解
- 安装SVN服务
- htonl(),htons(),inet_addr(),inet_ntoa()函数
- error while loading shared libraries: xxx.so.x" 错误的原因和解决办法
- 迪杰斯特拉算法感悟
- FLV视频文件在服务器上无法播放解决方案