2013-01-14 20 views
9

バイナリ検索ツリーについての本を読んでいます。アスタリスクとアンパサンドの両方をパラメータに入れてください。++

class BST 
{ 
public: 
    void insert(const Comparable & item) 

private: 
    BinaryNode *root; 
    struct BinaryNode 
    { 
     Comparable element; 
     BinaryNode *left; 
     BinaryNode *right; 
     BinaryNode(const Comparable & theElement, BinaryNode *lt, BinaryNode *rt) : 
      element(theElement), left(lt), right(rt) {} 
    } 
    void insert(const Comparable & item, BinaryNode * & t) const; 
}; 

privateinsert機能はpublicinsert機能のためのヘルパー関数である、とprivateinsert関数が再帰を使用して挿入する適切な場所を探します。

私が理解できない部分は、パラメータにBinaryNode * & tです。どういう意味ですか? アドレスのポインタt

+1

関数パラメータで使用されたときにそれぞれが何をするのかを考え、それらを組み合わせる。 – chris

答えて

10

8あなたの表現で。

tのアドレスのポインタ?

ampersand &演算子はC++で混乱しています。変数のアドレスを与えるもの構文は異なります。変数のいくつかの前に

ampersand &以下のように:

BinaryNode b; 
BinaryNode* ptr = &b; 

しかし、次のような方法は、参照変数のためである(そのシンプルなポインタではありません):

BinaryNode b; 
BinaryNode & t = b; 

をし、あなたのような以下の通りです:

BinaryNode b; 
BinaryNode* ptr = &b; 
BinaryNode* &t = ptr; 
+1

ハリー・チョー、他に疑問がある場合はお知らせください... –

+0

ありがとうございます!このような大きな説明 –

2

ポインタを参照しているので、この関数でポインタを変更すると外側に変更されます。 簡単な例http://liveworkspace.org/code/1EfD0QBinaryNode * & t)

  BinaryNode*    & t 
      -------------    ----- 
      BinaryNode pointer  t is reference variable 

はそうtBinaryNodeクラスのポインタへの参照である$

関連する問題