1

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

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

4 回答 4

8

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

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

};
于 2013-04-03T11:39:30.003 回答
3

通常就像你现在做的那样。你在同一个班级,所以你可以访问私有方法。只是主要公开。另请注意,main 不是成员函数的好名称。main 通常是为程序的入口点保留的,不能在一个类中。

于 2013-04-03T11:39:31.923 回答
1

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

于 2013-04-03T11:39:48.417 回答
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;
}
于 2017-08-06T05:36:17.377 回答