C++构造函数和析构函数在类里面和外面定义有什么区别?

麦兜和小可的舅舅 2014-08-21 04:21:40
如题。构造函数和析构函数肯定更要在类里面声明,但是定义可以在类外面。请问,C++构造函数和析构函数在类里面和外面定义有什么区别?
...全文
1997 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohuh421 2016-08-12
  • 打赏
  • 举报
回复
区别就是在个在内, 一个在外. 还有在外实现, 可以放到.cpp文件中实现. 当你要导出类到lib文件中的时候, 就能隐藏你的实现代码.
  • 打赏
  • 举报
回复
类内相当于函数 用inline修饰过,具有内部链接属性。 现在的编译器,都支持链接时内联优化了,所以最好分开写,将实现写到cpp中。 能够避免某些特殊情况因为inline属性造成的调用错乱。
天涯泛孤舟 2016-08-12
  • 打赏
  • 举报
回复
至少我的是定义在类内就对,定义在类外就错,仔细查过上百遍,我也是百思不得解
Saleayas 2015-11-10
  • 打赏
  • 举报
回复
很早的编译器必须放在外边。 这样,定义成员函数的时候,可以看到在其后定义的成员变量,否则会使用在此前定义的外部变量。 不过现在的编译器没有这个问题。
srxumin 2015-11-09
  • 打赏
  • 举报
回复
确实是内联与非内联的区别
flying_music 2015-11-09
  • 打赏
  • 举报
回复 2
运行起来是没有区别的,但类的构造函数和析构函数是不适合定义为内联函数的(类内部定义的默认为内联),因为类的构造函数和析构函数可能要去执行基类或成员对象的构造函数和析构函数,也就是内联函数本身还要去调用别的函数,这样一来就会违反内联函数使用的目的,即以最小代码膨胀换取最多调用时间
qq_20534747 2015-11-08
  • 打赏
  • 举报
回复
写在类内,如果代码行小于5行,一般当做内联函数处理,可以增加代码的可读性。其实c++要求一般将函数的定义写在类外,这样看的比较清晰。
paschen 版主 2015-11-08
  • 打赏
  • 举报
回复
引用 12 楼 paschen 的回复:
在类里一般编译器是当成inline处理的,外面则是当普通函数
通常如果构造函数短小一般就直接放类中了,长的话就放去外面
勤奋的小游侠 2015-11-08
  • 打赏
  • 举报
回复
引用 11 楼 LiLx21 的回复:
随便问一下,问什么我的构造函数在类的里面定义的话就正常,如果在类的外面定义链接是就会提示错误
不会,要么你在类外的 代码没有加类名限定符,要么就是cpp 文件没 有加入到编译工程中。 类外和类内定义效果是一样的。
Enguei_99 2015-11-07
  • 打赏
  • 举报
回复
没实质区别,只是写在外面增加代码的可读性
paschen 版主 2015-11-07
  • 打赏
  • 举报
回复
在类里一般编译器是当成inline处理的,外面则是当普通函数
LiLx21 2015-11-07
  • 打赏
  • 举报
回复
随便问一下,问什么我的构造函数在类的里面定义的话就正常,如果在类的外面定义链接是就会提示错误
反转灵魂 2014-08-22
  • 打赏
  • 举报
回复
一般私有的定义在里面,公有的随便。 其实也没区别。
yuyunliuhen 2014-08-22
  • 打赏
  • 举报
回复
木有区别 。
山在岭就在 2014-08-22
  • 打赏
  • 举报
回复
没区别,函数体较长的话就在类外定义吧
边走边瞧 2014-08-22
  • 打赏
  • 举报
回复
引用 7 楼 u010030181 的回复:
有区别的,一般在类定义的函数默认会成为inline函数,但实际上是不是inline函数还的看你所写的函数在编译器看来是否复杂,如果复杂则就认为不是inline函数,而在类外定义,则必须显示的写出inline关键字才能成为inline函数,但实际运行情况还是要根据该函数对编译器是否复杂来决定的!而在类中声明函数,在类外定义,则可读性比较高……
多谢指点,用了这么多年的C++,这个问题还不知道,惭愧,哈哈。
QIUSQJF 2014-08-22
  • 打赏
  • 举报
回复
有区别的,一般在类定义的函数默认会成为inline函数,但实际上是不是inline函数还的看你所写的函数在编译器看来是否复杂,如果复杂则就认为不是inline函数,而在类外定义,则必须显示的写出inline关键字才能成为inline函数,但实际运行情况还是要根据该函数对编译器是否复杂来决定的!而在类中声明函数,在类外定义,则可读性比较高……
神奕(deprecated) 2014-08-21
  • 打赏
  • 举报
回复
没区别!!!
kuankuan_qiao 2014-08-21
  • 打赏
  • 举报
回复
没有区别啊 都可以 和普通函数一样
apexMing 2014-08-21
  • 打赏
  • 举报
回复
区别仅仅在于编程的风格以及代码的可读性。 如果函数体过大,自然放在类定义的外边,不然影响代码的可读性。
加载更多回复(2)

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧