这个问题涉及程序结构及其与多个文件的分离(或缺失)。我最近看到self-contained, single-file BFS demonstration in C++;突出显示结构的简略版本如下:
#include<iostream>
#include <list>
using namespace std;
class Graph
{
//declarations of member functions and variables
int V;
list<int> *adj;
public:
Graph(int V);
void addEdge(int v, int w);
void BFS(int s);
};
//definition of constructors, member functions
Graph::Graph(int V)
{
this->V = V;
adj = new list<int>[V];
}
...
// Driver program
int main()
{
Graph g(4);
g.addEdge(0, 1);
...
g.BFS(2);
return 0;
}
或者,我们可以将类声明放在.h
头文件中,将实现放在另一个.cc
文件中。上面引用的方法有哪些缺点?有些我能想到:
1.无法在其他课程中include
Graph
课程;
2.无法单独编译Graph
类,即非模块化
还有其他缺点吗?关于名称空间污染似乎没有任何不利因素。
我觉得以前应该问过这个问题,但是我无法立即在这里找到它。