2015-11-04 116 views
-1

我知道,如果我申报数据成员或成员函数的类没有访问修饰符,编译器将它们作为私有成员,现在我有一个简单的类名为showNum,当我运行它,它给了我一个与我输入的价值不同! 是不是因为set_value功能是私有的,它不是从对象num1访问的,这就是为什么它给了我另一个值?C++私有函数成员

showNum类和main函数的代码是:

class showNum 
{ 
    int a; 
    void set_value(int num) 
    { 
     num=5; 
     a=num; 
    } 
public: 
    void show_value() 
    {cout<<a;} 
}; 

void main() 
{ 
    showNum num1; 
    num1.show_value(); 
} 
+0

你在哪里设置值? – 101010

+1

你永远不会调用'set_value'所以'了'永远不会设置任何东西。 – NathanOliver

+0

你期望这个输出?你也缺少'main'的返回类型。 – TartanLlama

回答

2

你永远不会调用SET_VALUE(),所以您的会员a未初始化当你调用show_value()等a将是不确定的

+0

当我调用set_value函数编译器给我一个错误: 错误:void showNum :: set_value(int)'是私有的 –

+2

@mouad_raizada当然,你会得到一个编译器错误,因为'set_value()'是'private'。 –

+0

感谢您的回答,我感到困惑我的回答,现在很明显 –

0

你可以这样做:

class showNum 
{ 
int a; 
public: //change hear 
void set_value(int num) 
    { 
    //change hear 
    a=num; 
    } 

void show_value() 
{cout<<a;} 
}; 
main() 
{ 
showNum num1; 
num1.set_value(5);//change hear 
num1.show_value(); 
} 
+0

让我知道它的工作与否。调用主SET_VALUE功能时,因为它是私有 –

+0

编译器错误 –