C ++:我是否正确定义私有函数和公共函数的主体?

时间:2013-10-28 16:24:34

标签: c++

在BST.h文件中

我有:

class node
{
public:
node* left;
node* right;
int key;
}
class BST
{
public:
void add(int newKey);
private:
node* root;
node* addHelper(node* nd, int newKey);
};

然后我在bst.cpp文件中实现add和addHelper函数:

 #include "BST.h"

    public void add(int newKey){

       addHelper(root,newKey); 

    }

   node* BST :: addHelper(Node* nd, int newKey)
   {
       //do something..

   } 

我还需要将public add(int newKey)函数定义为: bst.cpp中的void BST :: add(int newKey)

2 个答案:

答案 0 :(得分:1)

是的,因为您需要指定您定义的函数addBST的成员,而不是名为add的免费函数。

在以下示例中,两个函数是分开的,即使它们具有相同的名称:

void add(int newKey)
{
   // Code to define free function named `add`
   // - this function is not a member of any class
}

void BST::add(int newKey)
{
   // Code to define function named `add` which is member of class `BST`
}

答案 1 :(得分:1)

您的add函数应定义为:

void BST::add(int newKey){

   addHelper(root,newKey); 

}

只有在类定义中才需要访问说明符。此处需要范围解析运算符来确认这与add()所属的BST相同。