Параметр безопасности по умолчанию в классах

Я заметил в большом количестве кода, что люди объявляют classes public прежде чем писать код в него. Это предпочтение или есть смысл? Мне кажется это излишним struct's параметр по умолчанию public и делает именно то, что делает класс (как я прочитал).

пример кода

class box
{
public:
void setParam( int x, int y) { . . . }
int getWidth(){ . . . }
int getHeight(){ . . . }
private:
int width, height;
}

Может быть сделано без объявления его в структуре.

1

Решение

Обычно это вопрос соглашения / семантики, чем по технической причине.

Обоснование обычно таково, что structs зарезервированы для использования POD, вспомогательных структур данных, «полезных данных», функторов и т. д. Принимая во внимание, что classОни предназначены для типов, которые инкапсулируют нетривиальные операции, которые обычно должны учитывать некоторый тип инварианта класса.

2

Другие решения

struct похоже, ваш класс может выглядеть так:

struct Rect
{
int x, y, w, h;
};

Он мгновенно сообщает читателю, что он предназначен для простого типа POD без наворотов. С другой стороны, в вашем примере есть методы доступа, которые кажутся излишними, если все, что они намерены сделать, — это получить и установить ваши приватные члены. Вы могли бы также сделать их публичными.


Пример моего комментария:

class box
{
Rect _surface;
public:
explicit box(Rect surface) : _surface(surface)
{
if (surface.w <= 0 || surface.h <= 0) throw bad_dimensions();
}
};
2

По вопросам рекламы [email protected]