2016-04-10 29 views
-1

我刚刚从C移到C++,所以我想了解类和结构之间的区别。 我正在构建一个处理二叉搜索树的代码,并且正在使用类。使用指针访问类内部的getter函数

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

_“这个代码能工作吗?”_嗯,你试过了吗? –

+1

“了解类别和结构之间的差异”。没有,除了结构成员是默认公开的,而类成员是私有的。没有其他区别。这与这个问题有什么关系? –

+0

我还在写它,我想知道如果我没有浪费我的时间超过200行代码 – PanthersFan92

回答

0

是的,它会工作,这是使用getter函数时这样做的“自然”方式。

当你使用一个结构来代替,那么该行不会看太大的不同:

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

为了提高通话的效率,可以使吸气功能inline。但是,大多数编译器默认默认为优化,所以不需要它。在那种情况下,使用getter函数没有开销。