В последнее время я изучаю MFC, следующие коды меня сильно озадачили:
class CRect : public tagRECT
{
public:
// Constructors
// uninitialized rectangle
CRect();
// from left, top, right, and bottom
CRect(int l, int t, int r, int b);
// copy constructor
CRect(const RECT& srcRect);
// from a pointer to another rect
CRect(LPCRECT lpSrcRect);
// from a point and size
CRect(POINT point, SIZE size);
// from two points
CRect(POINT topLeft, POINT bottomR
...
Базовый класс CRect — это структура! Я никогда не узнал этого раньше. И если я позвоню
CWnd :: GetClientRect (LPRECT lpRect);
я могу использовать прямоугольник или же &прямоугольник (CRect rect) в качестве параметра. Это удивительно!
Я хочу знать некоторые правила о классе с помощью struct base. Спасибо!
В C ++ классы и структура одинаковы, за исключением их поведения по умолчанию в отношении наследования и уровней доступа членов.
Класс C ++
Наследование по умолчанию = частное
Уровень доступа по умолчанию для переменных и функций-членов = private
Структура C ++
Наследование по умолчанию = public
Уровень доступа по умолчанию для переменных и функций-членов = public
Короче говоря, да, класс может наследовать от структуры в C ++.
Других решений пока нет …