Рубрики

Структура против класса в C ++

В C ++ структура такая же, как у класса, за исключением нескольких различий. Самым важным из них является безопасность. Структура не защищена и не может скрыть детали своей реализации от конечного пользователя, пока класс защищен и может скрыть детали программирования и проектирования. Ниже приведены пункты, которые разъясняют эту разницу:

1) Члены класса по умолчанию являются закрытыми, а члены структуры являются открытыми по умолчанию.
Например, программа 1 не работает при компиляции, а программа 2 работает нормально.

   
// Программа 1
#include <stdio.h>

  

class Test {

    int x; // х приват

};

int main()

{

  Test t;

  t.x = 20; // ошибка компилятора, потому что x является частным

  getchar();

  return 0;

}

   
// Программа 2
#include <stdio.h>

  

struct Test {

    int x; // х публичный

};

int main()

{

  Test t;

  t.x = 20; // работает нормально, потому что x общедоступен

  getchar();

  return 0;

}

2) При извлечении структуры из класса / структуры спецификатор доступа по умолчанию для базового класса / структуры является общедоступным. А при получении класса спецификатор доступа по умолчанию является закрытым.
Например, программа 3 завершается неудачно при компиляции, а программа 4 работает нормально.

   
// Программа 3
#include <stdio.h>

  

class Base {

public:

    int x;

};

  

class Derived : Base { }; // эквивалентно классу Derived: private Base {}

  

int main()

{

  Derived d;

  d.x = 20; // ошибка компилятора, потому что наследование является частным

  getchar();

  return 0;

}

   
// Программа 4
#include <stdio.h>

  

class Base {

public:

    int x;

};

  

struct Derived : Base { }; // эквивалентно структуре Derived: public Base {}

  

int main()

{

  Derived d;

  d.x = 20; // работает нормально, потому что наследование общедоступно

  getchar();

  return 0;

}

Связанная статья: Различие между структурами C и структурами C ++

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Структура против класса в C ++

0.00 (0%) 0 votes