如何解决处理标题和源文件的最佳方法
我总是这样安排我的C ++头文件和源文件:
prog.h
#include <iostream>
class Prog
{
public:
Prog(std::string);
~Prog();
void printName();
private:
std::string name;
};
#include "prog.cpp"
prog.cpp
Prog::Prog(std::string n):
name(n)
{
std::cout << "Program \"" << name << "\" started.\n";
}
Prog::~Prog()
{
std::cout << "Program \"" << name << "\" ended.\n";
}
void Prog::printName()
{
std::cout << "Program name is: \"" << name << "\".\n";
}
main.cpp
#include "prog.h"
int main()
{
Prog prog {"MyCalculator"};
prog.printName();
return 0;
}
但是我最近发现以其他方式安排它们很常见:
prog.h
class Prog
{
public:
Prog(std::string);
~Prog();
void printName();
private:
std::string name;
};
prog.cpp
#include <iostream>
#include "prog.h"
Prog::Prog(std::string n):
name(n)
{
std::cout << "Program \"" << name << "\" started.\n";
}
Prog::~Prog()
{
std::cout << "Program \"" << name << "\" ended.\n";
}
void Prog::printName()
{
std::cout << "Program name is: \"" << name << "\".\n";
}
main.cpp
#include <iostream>
#include "prog.h"
int main()
{
Prog prog {"MyCalculator"};
prog.printName();
return 0;
}
我发现第一种方法更方便,所以有什么理由比第二种方法更喜欢第二种方法?
解决方法
头文件不应包含源代码。
- 我认为第一种方法可能会在足够复杂的项目中引发依赖项错误(例如,使用循环依赖项),因为不要将声明和定义分开。
- 在第二个中,编译时间更快,因为您可以分别编译每个源文件。
另外,您可能find this question有用。
,第一个版本是“ Accelerated C ++”(2000年版)这本书首次引入类声明的头文件时建议做的事情。
我认为第二个版本看起来更优雅,因为它在程序开始时将所有#include
个预编译器语句组合在一起。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。