【发布时间】:2018-02-05 18:28:37
【问题描述】:
Header-File-1 和 Header-File-2 的区别对程序(用 C++ 编写)有何影响?
哪个是更好的编码实践?
感谢您提前回复。
头文件-1
#ifndef BST
#define BST
#include<cstdlib>
class BST{
struct Node{
DataType dataIn;
Node * rigth;
Node * left;
};
public:
BST();
~BST();
Node * insert(DataType dataIn);
Node * remove(DataType dataOut);
Node * search(DataType dataSearch);
void printTree();
private:
Node * root;
}
#endif
头文件-2
#ifndef BST
#define BST
#include<cstdlib>
struct Node{
DataType dataIn;
Node * rigth;
Node * left;
};
class BST{
public:
BST();
~BST();
Node * insert(DataType dataIn);
Node * remove(DataType dataOut);
Node * search(DataType dataSearch);
void printTree();
private:
Node * root;
}
#endif
【问题讨论】:
-
using namespace std;总是不好 -
和 “哪个是更好的编码实践?” 是基于意见的,它们都有潜在的用例
-
如果在header1中将
Node的定义设为public,那么差别不大。如果它是私有的,BST的用户将很难使用从您的方法返回的指针 -
@UnholySheep “使用命名空间标准;总是不好的”。一般还是在头文件里?
-
不相关,我会花相当多的时间思考面向公众的
insert、remove和search函数,所有这些函数都期望root作为第一个参数,其中私有root成员变量已经提供了它们在概念上应该在来自外部调用的初始条目(假设它们是递归的)时使用的唯一初始根。简而言之,在面向公众的成员函数中不应该需要这些参数。该设计问题存在于 both 标题中。
标签: c++ object-oriented-analysis