C ++:从该类的公共部分调用类中的私有函数

时间:2013-04-03 11:37:11

标签: c++ class function

如果我要创建一个类并将几个函数放入私有部分,我如何从同一个类的公共部分调用这些函数? 例如:

class calculator{
public: //What would go here

private:
    float calculate(float x, char y, float z){
        float answer;

        switch (y){

          case '+':
            answer = x + z;
            break;

          case '-':
            answer = x - z;
            break;

          case '/':
            answer = x / z;
            break;

          case '*':
            answer = x * z;
            break;

          default:
            return(0);
        }
        cout <<"= "; return answer;
    }

    void main(){
        float num1;
        float num2;
        char aOp;
        system("CLS");
        cout << ">> "; cin >> num1 >> aOp >> num2;
        cout << calculate(num1, aOp, num2) << endl << endl;
    }
};

4 个答案:

答案 0 :(得分:8)

您只需从公共成员调用私有成员函数:

class Foo
{
 public:
  void foo() { privateFoo(); }
 private:
  void privateFoo();

};

答案 1 :(得分:3)

通常和你现在一样。你在同一个班级,所以你可以访问私人方法。 只是让主要公众。另请注意,main不是成员函数的好名称。 main通常保留给程序的入口点,不得在类中。

答案 2 :(得分:1)

如果你想调用私有声明的函数,如果你想从任何地方调用它,你必须在公共部分调用一个函数(或者为继承的类保护),然后你必须调用它私人职能。

答案 3 :(得分:0)

确定。记住一件事。 私有函数只能在另一个属于同一个类的成员的函数的帮助下调用。甚至一个对象也不能使用点运算符调用私有函数。参见这个例子:

#include<iostream>
using namespace std;
class student
{
private:
int m;
void read void //Private function of the class.
public:
void update(void);
void write(void);
};

如果s1是班级学生的对象,那么我们就无法写下这个 -

s1.read(); //it won't work: object can not access private members.

但是我们知道我们可以在同一个类的另一个函数的帮助下调用read()函数,所以我们可以在 update()函数或 write(函数)的帮助下调用它( )功能。 所以这里我们在update()函数的帮助下调用read()函数来更新m的值。

void student :: update(void)
{
read(); ///simple call ; no object used
}

因此,以下是调用私有成员函数的方法。 最后这里是完整的程序,它借助update()和read()函数更新m的值。 -

#include<iostream>
using namespace std;
class student
{
int m;
void read()
{
m=5;
cout<<m;
}
public:
void update();
void write();

};
void student :: update()
{
    read();
}
int main()
{
student s1;
s1.update();
return 0;
}