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

Язык C++ / Сравнение классов и структур в C++

 

Классы в С++ определяются ключевым словом class. Они представляют собой форму структуры, у которой спецификация доступа по умолчанию – private, то есть

 
class s { ...};

есть сокращенная запись

 
struct s {private: ...};

Хотя такое определение класса и справедливо, базовым в языке С++ является понятие класса. В С++ принято считать, что структура struct – это просто класс, все члены которого общие, то есть

 
struct s {...};

есть просто сокращенная запись
 
class s {public: ...};

Структуры необходимо использовать в тех случаях, когда сокрытие данных неуместно.
В качестве иллюстрации, представим абстрактный тип данных для комплексных чисел с помощью структуры и с помощью класса. Единственное отличие — в использовании ключевых слов: private и public.
С использованием структуры:

1
2
3
4
5
6
7
8
9
10
11
12
13
struct complex
{
  void assign(double r, double i);
  void print() { cout << real << « + » << imag << «i»; }
private:
  double real;
  double imag;
};
void complex::assign(double r, double i = 0.0)
{
  real = r;
  imag = i;
}

С использованием класса:

1
2
3
4
5
6
7
8
9
10
11
12
13
class complex
{
  double real;
  double imag;
public:
  void assign(double r, double i);
  void print() { cout << real << « + » << imag << «i»; }
};
void complex::assign(double r, double i = 0.0)
{
  real = r;
  imag = i;
}

Чаще всего структуры содержат только поля и не содержат методов.
Если предполагается создание объектов, для которых будут реализованы методы их использования, то целесообразно использовать класс.


Назад: Язык C++

Комментариев к записи: 6


  • Добрый день. У меня возник вопрос. Нет ли у вас на этом опечатки либо ошибки? struct s {private: ...}; Хотя такое определение класса и справедливо, базовым в языке С++ является понятие класса. В С++ принято считать, что структура struct – это просто класс, все члены которого общие, то есть struct s {private: ...}; // тут разве не public должно быть ? есть просто сокращенная запись// Такой вопрос. class s {public: ...}; Структуры необходимо использовать в тех случаях, когда сокрытие данных неуместно. В качестве иллюстрации, представим абстрактный тип данных для комплексных чисел с помощью структуры и с помощью класса. Единственное отличие — в использовании ключевых слов: private и public.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *