有关类的问题!

hhcjb 通用电气(中国)研究开发中心有限公司 软件工程师  2003-12-12 07:34:34
在C++中,在类中定义函数,与类外定义函数有什么区别!兄弟们能详解一下吧!!
例如:
// 类中定义
class name
{
int x;
public:
copy()
{}
};

//类外定义
class name
{
int x;
public:
copy();
};
name::copy()
{
}
...全文
37 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
jeckyz 2003-12-13
我补充一个很重要的区别.对于内联/非内联楼上解释清楚了,但还有一个很重要的却没提到.假如你在开发一个大项目(编译整个项目要3小时以上),这样做是很不利的,在开发调试的过程中改变某个成员函数的实现可能频率很高(相对来说,增删接口会少些),每当你一改变了这样设计的类,那么包含了这个类的所有文件都要重新编译,这样在调试的时候是相当烦的.如果无论如何你把成员的实现放到一个单独的文件中,那么你改动了成员的实现就不至于包含了该类声明的所有文件都要重新编译,省下不少时间哪!体会到了吗?

如果你觉得某个成员确实有内联的必要,分开来实现也可以建议让编译对该函数实施内联的,只要在函数定义前加上 "inline" 关键字也是同样效果的.

  • 打赏
  • 举报
回复
lijun2044 2003-12-13
在类里面定义的函数向编译程序申请为内联函数。
而类外则不是
  • 打赏
  • 举报
回复
hnbbang 2003-12-13
我也这么认为.
  • 打赏
  • 举报
回复
newegg2002 2003-12-13
我想,对于那些函数体长一点函数,就不要内联吧,不但牺牲运行时间,还不易于代码维护;简单一点的嘛,倒是可以考虑的,
  • 打赏
  • 举报
回复
LinuxPanther 2003-12-13
也是内联与否的答案了。
不过,也可以在类外内联了
用inline 修饰了额。
  • 打赏
  • 举报
回复
yoyo82 2003-12-13
是隐式和显式的区别
  • 打赏
  • 举报
回复
byyyyy 2003-12-12
写在类里面的成员函数,如果没有特别注明则编译器会认为是内联函数,如果函数本身比较长那么比较聪明的编译器不会认为其为内联
  • 打赏
  • 举报
回复
cpsoft 2003-12-12
请问构造函数和析构函数也会内联吗?
  • 打赏
  • 举报
回复
langzi8818 2003-12-12
1楼说的对吧!差不多都是这么理解的
  • 打赏
  • 举报
回复
sms88 2003-12-12
在类外定义还有一个好处就是在保证成员函数定义正确的前提下,能更好的理解类的接口等的作用。
因为你的代码总要回过头来维护,这样就更直观些,简捷些
  • 打赏
  • 举报
回复
chenmujian81 2003-12-12
在类里面定义的函数都是内联函数。
而类外则不是
  • 打赏
  • 举报
回复
glacierrr 2003-12-12
楼上讲得不错,好像就是内联不内联的关系。不过内联只是一个声情,不一定会真的内联,由编译器来判断是否值得内联。
  • 打赏
  • 举报
回复
sisijin 2003-12-12
copy函数没有写返回类型……

我的理解是:
写在类里面的成员函数,如果没有特别注明则编译器会认为是内联函数,如果函数本身比较长那么比较聪明的编译器不会认为其为内联

写在类外面的成员函数,如果没有特别注明则认为不是内联
  • 打赏
  • 举报
回复
相关推荐
发帖
C++ 语言
加入

6.1w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2003-12-12 07:34
社区公告
暂无公告