Стефан Дэвис - С++ для чайников .

Здесь есть возможность читать онлайн «Стефан Дэвис - С++ для чайников .» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 2007, ISBN: 2007, Издательство: Издательский дом Вильямс. Компьютерное издательство Диалектика, Жанр: Технические науки, Программирование, Программы, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

С++ для чайников .: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «С++ для чайников .»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

empty-line
1
empty-line
4

С++ для чайников . — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «С++ для чайников .», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

{

noOfStudents++ ;

}

~Student( )

{

noOfStudents-- ;

}

protected :

static int noOfStudents;

string name ;

} ;

Student s1 ;

Student s2 ;

Член noOfStudents входит в состав класса Student , но не входит в состав объектов s1 и s2 . Таким образом, для любого объекта класса Student существуют отдельные члены name и только один noOfStudents , который доступен для всех объектов класса Student .

"Хорошо,— спросите вы,— если место под noOfStudents не выделено ни в каком объекте класса Student , то где же он находится?" Ответ прост: это место не выделяется. Вы должны сами выделить для него место так, как показано ниже, int Student::noOfStudents = 0 ;

Этот своеобразный синтаксис выделяет место для статического члена класса и инициализирует его нулём. Статические данные-члены должны быть глобальными ( как статические переменные не могут быть локальными по отношению к некоторой функции ).

Для любого члена имя которого встречается вне класса требуется указание - фото 252

«Для любого члена, имя которого встречается вне класса, требуется указание класса, к которому он принадлежит.»

[ Помни! ]

Такое выделение памяти вручную удивляет но только до тех пор пока вы не - фото 253

«Такое выделение памяти вручную удивляет, но только до тех пор, пока вы не столкнётесь с проектами, в которых используется несколько модулей с исходным кодом. С++ должен знать, в каком именно.срр -файле надо выделить пространство для статической переменной. В случае нестатических членов это не составляет проблемы, так как память выделяется там и тогда, где и когда создаётся объект класса.»

[ Советы ]

_________________

225 стр. Глава 19. Статические члены

Обращение к статическим данным-членам...226

Правила обращения к статическим данным-членам те же, что и к обычным членам. Из класса к статическим членам обращаются так же, как и к другим членам класса. К открытым статическим членам можно обращаться извне класса, а к защищённым — нельзя, как и к обычным защищённым членам.

class Student

{

public :

Student( )

{

noOfStudents++ ; /* Обращение из класса */

/* ...остальная программа... */

}

static int noOfStudents ;

/* ...то же, что и раньше... */

} ;

void fn( Student & s1 , Student s2 )

{

/* Обращение к открытому статическому члену */

cout << "Количество студентов - "

<< s1.noOfStudents /* Обращение извне Класса */

<< "\n" ;

}

В функции fn( ) происходит обращение к noOfStudents с использованием объекта s1 . Однако, поскольку s1 и s2 имеют одинаковый доступ к члену noOfStudents , возникает вопрос: почему я выбрал именно s1 ? Почему я не использовал s2 ? На самом деле это не имеет значения. Вы можете обращаться к статическим членам, используя любой объект класса, например, так:

/* ...Класс определяется так же, как и раньше... */

void fn( Student & s1 , Student s2 )

{

/* Представленные команды приведут к идентичному результату */

cout << "Количество студентов - "

<< s1.noOfStudents <<"\n" ;

cout << "Количество студентов - "

<< s2.noOfStudents << "\n" ;

}

На самом деле нам вообще не нужен объект! Можно использовать просто имя класса, как показано в следующем примере:

/* ...Класс определяется так же, как и раньше... */

void fn( Student & s1 , Student s2 )

{

/* Результат остаётся неизменным */

cout << "Количество студентов - "

<< Student::noOfStudents

<< " \ n" ;

}

Независимо от того, будете ли вы использовать имя объекта или нет, С++ всё равно будет использовать имя класса.

_________________

226 стр. Часть 3. Введение в классы

Объект используемый для обращения к статическому члену никак не - фото 254

«Объект, используемый для обращения к статическому члену, никак не обрабатывается, даже если это обращение явным образом указано в выражении. Для того чтобы понять, что я имею в виду, рассмотрим приведённый ниже пример.»

[ Технические подробности ]

class Student

{

static int noOfStudents ;

Student & nextStudent( ) ;

/* ...To же, что и раньше... */

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «С++ для чайников .»

Представляем Вашему вниманию похожие книги на «С++ для чайников .» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «С++ для чайников .»

Обсуждение, отзывы о книге «С++ для чайников .» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x