Cтраница 2
![]() |
Простое определение классаЧте. [16] |
Используйте при определении класса каждый спецификатор доступа к элементам только один раз, что сделает программу более ясной и простой для чтения. Размещайте первыми элементы public, являющиеся общедоступными. [17]
Если члены базового класса объявлены со спецификатором доступа protected, то они доступны в производных классах, но не доступны для других функций программы. [18]
Все элементы данных и элементы-функции, объявленные в классе после спецификатора доступа public:, являются видимыми для всех функций, имеющих доступ к объекту этого класса. [19]
Все элементы данных и элементы-функции, объявленные в классе после спецификатора доступа private:, являются видимыми только для друзей класса и других его элементов. [20]
Снова отметим, что данные-элементы hour, minute и second предваряются спецификатором доступа к элементам private. Эти закрытые данные-элементы класса обычно недоступны вне класса ( но, как мы увидим в главе 7, друзья класса могут иметь доступ к закрытым элементам класса. Глубокий смысл такого подхода заключается в том, что истинное представление данных внутри класса не касается клиентов класса. Например, было бы вполне возможно изменить внутреннее представление и представлять, например, время внутри класса как число секунд после полуночи. [21]
По умолчанию способ доступа в классах - private, так что все элементы после заголовка класса и до первого спецификатора доступа считаются закрытыми. [22]
Помещайте все объявления дружественных функций и классов в начале определения класса сразу после его заголовка и не помещайте перед этими объявлениями никаких спецификаторов доступа. [23]
Помещайте все объявления дружественных функций и классов в начале области определения класса сразу после его заголовка и не помещайте перед этими объявлениями никаких спецификаторов доступа. [24]
Поскольку каждый элемент дерева Code Explorer имеет значок, указывающий его тип, упорядочивание по полям и методу менее важно, чем упорядочивание по спецификатору доступа. Я предпочитаю выводить все элементы в отдельной группе, поскольку это упорядочивание для доступа к каждому элементу требует меньше щелчков мыши. [25]
Однако многие программисты предпочитают сначала перечислять интерфейс класса ( т.е. открытые элементы класса); затем перечисляются закрытые элементы класса и, таким образом, возникает потребность в явном использовании спецификатора доступа private: в определении класса. [26]
Свойство ( property) - это интерфейс доступа к данным объекта, которые обычно хранятся в полях. Они имеют спецификаторы доступа, определяющие характер чтения и модификации данных. [27]
Остальные компоненты определения класса являются новыми. Метки public: и private: называются спецификаторами доступа к элементам. Все элементы данных и элементы-функции, объявленные после спецификатора public: ( и до следующего спецификатора доступа) доступны всюду, где программа имеет доступ к какому-либо объекту класса Time. Все элементы данных и элементы-функции, объявленные после спецификатора private: ( и до следующего спецификатора доступа) доступны только для функций-элементов класса. Спецификаторы доступа к элементам класса всегда заканчиваются двоеточием (:) и могут многократно появляться в определений класса. [28]
По умолчанию доступ к элементам класса открытый. Так что если вы после заголовка класса не указали спецификатор доступа, то открытыми ( public) будут считаться все элементы, объявленные после заголовка и вплоть до указания какого-то другого спецификатора доступа. Это использовано в примере объявления класса TMyClassl. Поля В, Н и метод F1 в этом классе являются открытыми. [29]
Остальные части определения класса - новые. Метки public: ( открытая) и private: ( закрытая) называются спецификаторами доступа к элементам. Любые данные-элементы и функции-элементы, объявленные после спецификатора доступа к элементам public: ( и до следующего спецификатора доступа к элементам), доступны при любом обращении программы к объекту класса Time. Любые данные-элементы и функции-элементы, объявленные после спецификатора доступа к элементам private: ( и до следующего спецификатора доступа к элементам), доступны только функциям-элементам этого класса. Спецификаторы доступа к элементам всегда заканчиваются двоеточием (:) и могут появляться в определении класса много раз и в любом порядке. [30]