我理解头文件提供的好处和灵活性,符号发现,编译器处理的加速等等。我不明白为什么现代C ++ IDE不会这样做。 t基于添加到代码文件中的成员/方法自动生成头文件,从而减少了使头文件与代码文件保持同步所涉及的手工劳动,反之亦然。由于IDE仅对头文件进行增量更改,因此开发人员可以修改标头并保留更改。
可以为添加/重命名/删除方法参数,重命名方法,将方法移动到另一个类等提供重构。在这种重构期间,IDE将负责更新标头+源文件。
该功能可能类似于Visual Studio中的Visual Form Designer。设计表单时,IDE会自动生成相同的代码,该代码存储在单独的IDE管理的源文件中。开发人员也可能修改此类代码文件,或者可能在用户管理的源文件中包含其他代码。
使用专业的C ++源代码,我遇到了各种可疑的做法:
头文件中定义的整个类,包括函数代码(&#34;为什么我可以在两个地方定义一个类,我可以在一个地方定义一个类?!&#34;)< / EM>
头文件中定义的有用函数(&#34;为什么要保持头文件是最新的,当我可以在头文件中定义函数?!让其他开发人员使用&# 34;如果他们没有考虑查看头文件,请转到声明&#34;找到该功能!&#34;)
缺少公共/静态函数的标头定义(减少编译时间?或者保存开发时间?)
虽然我不是一名专业的C ++程序员,但是来自高级背景(JS,C#,AS3),我可以感受到&#34;降级&#34;第一手使用C ++,我不明白为什么IDE本身无法消除这些缺点。
我决不以任何方式嘲笑IDE或编译器。我理解C ++允许比现代语言更复杂的定义程序的方法(例如C#),尽管模板的复杂性使我望而却步,但我希望看到高级语言带来的一些好处。进入C ++应用程序开发。
答案 0 :(得分:1)
我认为,你的问题的前提是不正确的。
在头文件中定义函数(或类成员函数)后,Eclipse Luna IDE可以自动生成实现存根(在CPP文件中)。
在标题中键入以下内容:
class MyClass
{
void my_method(const OtherClass& o, const std::string& name) const;
};
然后点击&#34;来源&gt;实施方法&#34;。 Eclipse在CPP文件中正确生成类似的内容:
void MyClass::my_method(const OtherClass& o, const std::string& name) const
{
// TODO: Auto-generated method stub.
}
我认为这是一个更典型的用例而不是&#34; [添加]成员/方法...到代码文件&#34;然后&#34;自动生成头文件&#34;。我们的想法是,大多数开发人员将设计(创建)一个接口,然后开发一个实现(有时在CPP文件中)。
至于&#34;头文件&#34;中定义的有用函数,这是开发人员希望编译器在许多翻译单元中内联的常见做法。