关于成员函数定义后置;的写法问题

幻夢之葉 2014-12-15 09:56:55
Class A
{
void Fun(){ }
}


Class A
{
void Fun(){ };
}

第二种写法是编译器扩展还是标准允许?!
...全文
263 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hetiezu 2014-12-20
  • 打赏
  • 举报
回复
我的理解和10#一样,并且因为经常性的在类声明最后的 } 外忘记加分号引起了好多次错误。我现在都习惯性的在花世界} 后加一个分号了。
lm_whales 2014-12-20
  • 打赏
  • 举报
回复
void Fun(){ };是早期标准好像, 去掉分号,是某些编译器的扩展吧 然后成为新的标准,分号成了可选的了
pengzhixi 2014-12-16
  • 打赏
  • 举报
回复
c++ 11标准都搞这么熟了
ri_aje 2014-12-15
  • 打赏
  • 举报
回复
标准允许的。c++14 9.2 member-declaration: attribute-specifier-seq[opt] decl-specifier-seq[opt] member-declarator-list[opt] ; 上面写 [opt] 的都是可选的,三个都不选就是一个空的 ; 了。函数定义后面以 ; 结束相当与函数定义后面紧跟了一个空的 member-declaration.
勤奋的小游侠 2014-12-15
  • 打赏
  • 举报
回复
加;代表上一个statment结束,你加10个;一样没有问题。
bear234 2014-12-15
  • 打赏
  • 举报
回复
class A { int i; ; void fun(); void fun2(){}; }; 都可以 我觉得这没什么奇怪的吧 就像int i下面那个单独的分号一样,你在函数后面加分号也应该会被视为声明了一个空语句呗~~
FightForProgrammer 2014-12-15
  • 打赏
  • 举报
回复
不会。学习下。好细节的感觉
ri_aje 2014-12-15
  • 打赏
  • 举报
回复
引用 6 楼 jianwen0529 的回复:
[quote=引用 3 楼 ri_aje 的回复:] 标准允许的。c++14 9.2 member-declaration: attribute-specifier-seq[opt] decl-specifier-seq[opt] member-declarator-list[opt] ; 上面写 [opt] 的都是可选的,三个都不选就是一个空的 ; 了。函数定义后面以 ; 结束相当与函数定义后面紧跟了一个空的 member-declaration.
引用 5 楼 u011337306 的回复:
一个是函数声明,一个是函数定义,要分清楚
11跟14竟然相差如此之大![/quote] 没差别。是我理解的有出入,#4 的那条用在主楼的情形更合适。
幻夢之葉 2014-12-15
  • 打赏
  • 举报
回复
引用 5 楼 u011337306 的回复:
一个是函数声明,一个是函数定义,要分清楚
不要任性!
幻夢之葉 2014-12-15
  • 打赏
  • 举报
回复
引用 4 楼 fly_dragon_fly 的回复:
标准有写的(C++11) 9.2 Class Member member-declaration: function-definition ;opt 这个真没注意,打开11的标准看了一下,上面有这样的一处,函数后面的;是可选的
引用 3 楼 ri_aje 的回复:
标准允许的。c++14 9.2 member-declaration: attribute-specifier-seq[opt] decl-specifier-seq[opt] member-declarator-list[opt] ; 上面写 [opt] 的都是可选的,三个都不选就是一个空的 ; 了。函数定义后面以 ; 结束相当与函数定义后面紧跟了一个空的 member-declaration.
11跟14竟然相差如此之大!
幻夢之葉 2014-12-15
  • 打赏
  • 举报
回复
引用 3 楼 ri_aje 的回复:
标准允许的。c++14 9.2 member-declaration: attribute-specifier-seq[opt] decl-specifier-seq[opt] member-declarator-list[opt] ; 上面写 [opt] 的都是可选的,三个都不选就是一个空的 ; 了。函数定义后面以 ; 结束相当与函数定义后面紧跟了一个空的 member-declaration.
引用 5 楼 u011337306 的回复:
一个是函数声明,一个是函数定义,要分清楚
11跟14竟然相差如此之大!
zacharyLiu 2014-12-15
  • 打赏
  • 举报
回复
一个是函数声明,一个是函数定义,要分清楚
fly_dragon_fly 2014-12-15
  • 打赏
  • 举报
回复
标准有写的(C++11) 9.2 Class Member member-declaration: function-definition ;opt 这个真没注意,打开11的标准看了一下,上面有这样的一处,函数后面的;是可选的

65,186

社区成员

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

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