В чем разница между частной переменной в Java и частной переменной в структуре C ++ - PullRequest
0 голосов
/ 22 июня 2019

В чем разница между закрытой переменной в классе java и закрытой переменной в структуре c ++?

Код Java, например, см. Ниже: реализация таблицы ADT.Пример c ++, см. ниже: применение «сокрытия реализации»

Я посмотрел онлайн, не смог найти никакого полезного источника, связанного с этой конкретной темой

Пример Java:

class Table{
    private int size;
    private int num;//numbers of items are stored in the arrray
    private int[] array;

    public Table(int size, int[] array){
        this.size = size;
        this.array = new int[size];
    }

    public insert(int[] array, int newItem){
        if(num<size){
            //for loop for adding items into the array;
        }
        else if(num>=size){
            //increment the size and copy the original array to the new array
        }
    }
}

Пример скрытия реализации на C ++:

struct B{
private:
    char j;
    float f;

public:
    int i;
    void func();
};


void::func(){
    i = 0;
    j = '0';
    f = 0.0;
};

int main(){
    B b;
    b.i = i; // legal
    b.j = '1'; // illegal
    b.f = 1.0; // illegal now

}

в c ++ мы не можем изменить приватную переменную, потому что эти bj = '1';бф = 1,0;две строки в функции main () вот почему?в Java мы не можем изменить приватные переменные в main ().

спасибо!

Ответы [ 2 ]

4 голосов
/ 22 июня 2019

За очень немногими исключениями частные переменные в C ++ и Java работают аналогично.В частности, в общем , эти переменные могут быть доступны только функциям-членам класса или struct, содержащим эти переменные.В противном случае доступ к этим полям / элементам данных запрещен.

Из этого правила есть несколько исключений.Неисчерпывающий список:

  • В Java вы можете использовать отражение, чтобы сделать закрытые поля других классов доступными, хотя это может быть запрещено контроллером доступа.

  • В C ++ к закрытым полям могут обращаться классы и функции, помеченные как friend s класса, содержащего приватное поле.

0 голосов
/ 22 июня 2019

Закрытые переменные - это переменные, которые НЕ доступны вне самого класса.

Подробнее о модификаторах доступа здесь

C ++ private в structs похожи в том смысле, что к ним можно получить доступ только в структуре member methods.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...