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

C++: Calling private function in a class from the public section of that class

本文关键字:函数 调用 公共部 c++      更新时间:2023-10-16

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

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;
    }
};

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

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

就像现在一样。你们在同一个类中,所以你们可以访问私有方法。把main设为public。还要注意,main不是成员函数的好名字。Main通常是为程序的入口点保留的,不能在类中。

如果你想调用私有声明的函数,如果你想从任何地方调用它,你必须调用公共部分的函数(或继承类的保护),从那里你必须调用这个私有函数。

好的。记住一件事。私有函数只能在作为同一类成员的另一个函数的帮助下调用。即使是对象也不能使用点操作符调用私有函数。请看下面的例子:

#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是class student的对象,那么我们将不能写出这个

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;
}