使用指针访问类中的getter函数

时间:2016-04-10 16:00:12

标签: c++ class pointers object binary-search-tree

我刚从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)

此代码有效吗?有没有更自然的"写作方式呢?在这种情况下,我应该只使用结构而不是类吗?

1 个答案:

答案 0 :(得分:0)

是的,它会起作用,这是使用getter函数时执行此操作的“自然”方法。

当您使用结构时,该行看起来不会有太大不同:

if(root->rson->rson != 0)

为了提高通话效率,您可以使用getter函数inline。但是,大多数编译器默认情况下会隐式执行此操作以进行优化,因此不需要它。在这种情况下,使用getter函数没有开销。