对于c++类的成员函数,以前一直沿用通常的写法,即在头文件中进行声明,在.cpp文件中具体实现。
最近采用了偷懒的做法,将实现也在头文件中,并且在class内来定义(见下面示例)。这样一来,就拥有了诸多方便之处:
1.省去了函数的声明
2.不必总是在.cpp和.hpp(.h)两个文件之间切来切去了
3.不必在实现类时写烦人的 ClassName::了
4.修改函数定义时,不必象之前考虑两边需要同步了
改用这种书写方式后,感觉方便多了,写代码时,甚至感觉心情都舒畅了许多 :)
当然,这样一来,肯定也有缺点,比如不会象之前可以把所有的声明放在一起,方便查看,但很多IDE都能够提供这方面的功能。
这里想问一下,这样有没有其它方面的问题或弊端,比如对于程序的编译、执行效率方面?
也希望大家一起讨论一下,分享一下各自好的编码习惯。
示例:
class Test{
private:
public:
void hello(char *s){
printf(s);
}
void helloWorld(){
hello("hi! ");
}
}
------解决方案--------------------
我比较习惯 把所有的声明放在一起 ,当代码量一上来,方便查看是首要关注的。
希望这个话题引起热议。
------解决方案--------------------
个人爱好,个人风格。
------解决方案--------------------
团队工作,任由自己的个性来~会引来同伴的反感~
还是要从 易读性、高变通性、易维护性等 考虑
------解决方案--------------------
个人习惯没啥问题,主要是不符合主流规范
------解决方案--------------------
这样默认是内联编译,还有编译以依赖的问题,问题太多了!
------解决方案--------------------
其实在IDE如此强大的今天,头文件中声明,源文件中定义,只是一个简单的跳转问题。
从声明中添加实现,用QtCreator可以轻松实现。
多用IDE的重构工具,而不是人工改写,将可以解决维护繁琐问题。
------解决方案--------------------
1. 会导致程序编译后的二进制体积膨胀:内联
2. 会严重影响编译时间:因为只要修改一处实现,就要重新编译包含该头文件的所有源码!
3. 如果作为类库,还存在一个ABI兼容问题:加大维护难度
------解决方案--------------------
同意10楼的观点
代码如果规模上去的话 一修改头文件 导致include的cpp会重新编译连接