Я заметил в большом количестве кода, что люди объявляют classes
public
прежде чем писать код в него. Это предпочтение или есть смысл? Мне кажется это излишним struct's
параметр по умолчанию public
и делает именно то, что делает класс (как я прочитал).
пример кода
class box
{
public:
void setParam( int x, int y) { . . . }
int getWidth(){ . . . }
int getHeight(){ . . . }
private:
int width, height;
}
Может быть сделано без объявления его в структуре.
Обычно это вопрос соглашения / семантики, чем по технической причине.
Обоснование обычно таково, что struct
s зарезервированы для использования POD, вспомогательных структур данных, «полезных данных», функторов и т. д. Принимая во внимание, что class
Они предназначены для типов, которые инкапсулируют нетривиальные операции, которые обычно должны учитывать некоторый тип инварианта класса.
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();
}
};