2015-11-04 7 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', поэтому' a' никогда не устанавливается ни на что. – NathanOliver

+0

Что вы ожидаете от этого вывода? Также вам не нужен тип возврата для 'main'. – TartanLlama

ответ

2

Вы никогда не называйте set_value(), чтобы ваш член a не инициализируется при вызове show_value() и так a будет неопределенным

+0

, когда я вызываю функцию set_value, компилятор дает мне ошибку: error: 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

Дай мне знать, что это работает или нет. –

+0

ошибка компилятора при вызове функции set_value в основном, потому что она закрыта –

Смежные вопросы