我刚从C转到C ++,所以我试图理解类和结构之间的差异。 我正在构建一个处理二叉搜索树的代码,并且我正在使用类。
class Node
{
public:
// C'tor D'tors
Node();
Node(int valinput);
~Node();
// Getters
Node * getrson() const { return rson; }
Node * getlson() const { return lson; }
int getval() const { return val; }
// Setters
void setlson(Node* input) { lson = input; }
void setrson(Node* input) { rson = input; }
void setval(int input) { val = input; }
private:
int val;
Node * lson;
Node * rson;
};
我知道我不应该直接访问私有变量,因此我应该使用get函数。我正在构建递归函数,所以我使用对象指针:
Node* insertion(Node* root,int val);
int checkheight(Node* root);
Node* rotate(Node* root, direction direction);
当我想访问某个节点的右儿子的正确儿子时,我是否需要编写如下内容:
if(root->getrson()->getrson() != nullptr)
此代码有效吗?有没有更自然的"写作方式呢?在这种情况下,我应该只使用结构而不是类吗?
答案 0 :(得分:0)
是的,它会起作用,这是使用getter函数时执行此操作的“自然”方法。
当您使用结构时,该行看起来不会有太大不同:
if(root->rson->rson != 0)
为了提高通话效率,您可以使用getter函数inline
。但是,大多数编译器默认情况下会隐式执行此操作以进行优化,因此不需要它。在这种情况下,使用getter函数没有开销。