如果我要创建一个类并将几个函数放入私有部分,我如何从同一个类的公共部分调用这些函数? 例如:
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;
}
};
答案 0 :(得分:8)
您只需从公共成员调用私有成员函数:
class Foo
{
public:
void foo() { privateFoo(); }
private:
void privateFoo();
};
答案 1 :(得分:3)
答案 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;
}