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

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: sci_tech, издательство Издательский дом Вильямс. Компьютерное издательство Диалектика, год 2007. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    С++ для чайников .
  • Автор:
  • Жанр:
  • Издательство:
    Издательский дом Вильямс. Компьютерное издательство Диалектика
  • Год:
    2007
  • Город:
    Москва
  • ISBN:
    0-7645-6852-3, 978-5-8459-0723-3
  • Рейтинг:
    4/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

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

С++ для чайников . - описание и краткое содержание, автор Стефан Дэвис, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
empty-line
1
empty-line
4

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

С++ для чайников . - читать книгу онлайн бесплатно, автор Стефан Дэвис
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

float Student::addCourse( int hours , float grade )

{

float weightedGPA ;

weightedGPA = this -> semesterHours * this -> gpa ;

/* добавим новый курс */

this -> semesterHours += hours ;

weightedGPA += hours * grade ;

this -> gpa = weightedGPA / this -> semesterHours ;

return this -> gpa ;

}

Независимо от того, добавите ли вы оператор this -> в тело функции явно или нет, результат будет одинаков.

_________________

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

►Разрешение области видимости...161

Символ :: между именем класса и именем его члена называют оператором разрешения области видимости, поскольку он указывает, какой области видимости принадлежит член класса. Имя класса перед двоеточиями похоже на фамилию, тогда как название функции после двоеточия схоже с именем — такой порядок записи принят на востоке.

С помощью оператора :: можно также описать функцию — не член, использовав для этого пустое имя класса. В этом случае функция addCourse( ) должна быть описана как ::addCourse( int , float ) .

Обычно оператор :: не обязателен, однако в некоторых ситуациях это не так. Рассмотрим следующий фрагмент кода:

/* addCourse — перемножает количество часов и оценку */

float addCourse( int hours , float grade )

{

return hours * grade ;

}

class Student

{

public :

int semesterHours ;

float gpa ;

/* Добавить пройденный курс к записи */

float addCourse( int hours , float grade )

{

/* Вызвать внешнюю функцию */

weightedGPA = addCourse( semesterHours , gpa ) ;

/* Вызвать ту же функцию для подсчёта оценки с учётом нового курса */

weightedGPA += addCourse( hours , grade ) ;

gpa = weightedGPA / semesterHours ;

/* Вернуть новую оценку */

return gpa ;

}

} ;

В этом фрагменте я хотел, чтобы функция-член Student::addCourse( ) вызывала функцию — не член ::addCourse( ) . Без оператора :: вызов функции addCourse( ) внутри класса Student приведёт к вызову функции Student::addCourse( ) .

Функциячлен может использовать для обращения к другому члену класса - фото 186

«Функция-член может использовать для обращения к другому члену класса сокращённое имя, подразумевающее использование имени текущего экземпляра класса.»

[ Помни! ]

В данном случае вызов функции без указания имени класса приводит к тому, что она вызывает саму себя. Добавление оператора :: в начале имени заставляет осуществить вызов глобальной версии этой функции ( что нам и нужно ):

/* addCourse — перемножает количество часов и оценку */

float addCourse( int hours , float grade )

{

return hours*grade ;

}

_________________

161 стр. Глава 13. Работа с классами

class Student

{

public :

int semesterHours ;

float gpa ;

/* Добавить пройденный курс к записи */

float addCourse( int hours , float grade )

{

/* Вызвать внешнюю функцию */

weightedGPA = ::addCourse( semesterHours , gpa ) ;

/* Вызвать ту же функцию для подсчёта оценки с учётом нового курса */

weightedGPA += ::addCourse( hours , grade ) ;

gpa = weightedGPA / semesterHours ;

/* Вернуть новую оценку */

return gpa ;

}

} ;

Это похоже на то, как если бы я звал Стефана в собственном доме. Все решили бы, что я зову самого себя: ведь в моём доме, естественно, подразумевается фамилия Дэвис. Если же я имею в виду какого-то другого Стефана, то должен сказать "Стефан Спупендайк" или "Стефан Мак-Суини" либо использовать какую-нибудь другую фамилию. Так же действует и оператор разрешения области видимости.

Расширенное имя функции включает в себя её аргументы Теперь же мы добавляем к - фото 187

«Расширенное имя функции включает в себя её аргументы. Теперь же мы добавляем к полному имени ещё и имя класса, к которому принадлежит функция.»

[ Помни! ]

►Определение функции-члена...162

Функция-член может быть определена как внутри класса, так и отдельно от него. Когда функция определяется внутри класса, это выглядит так, как в приведённом далее файле Savings.h :

/* Savings — определение класса с возможностью делать вклады */

class Savings

{

public :

/* Объявляем и определяем функции-члены */

float deposit( float amount )

{

balance += amount ;

return balance ;

}

unsigned int accountNumber ;

float balance ;

} ;

Использование такого заголовочного файла проще простого — его надо включить в программу и пользоваться определённым в нём классом, как вам заблагорассудится, например, как в приведённой далее программе SavingsClassInline .

_________________

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

/* SavingsClassInline — вызов фукции-члена, объявленной и определённой в классе Savings */

#include

#include

#include

using namespace std ;

#include " Savings.h "

int main( int nNumberofArgs , char* pszArgs[ ] )

{

/* печать кириллицы, если Вы не установите программки gccrus.exe и g++rus.exe */

setlocale (LC_ALL,".1251");

Savings s ;

s.accountNumber = 123456 ;

s.balance = 0.0 ;

/* Добавляем немного на счёт... */

cout << "Вкладываем на счёт 10 монет"

<< s.accountNumber << endl ;

s.deposit( 10 ) ;

cout << "Состояние счёта "

<< s.balance << endl ;

/* Пауза для того, чтобы посмотреть на результат работы программы */

system( "PAUSE" ) ; return 0 ;

}

Так использовать класс Savings может теперь любой программист которому - фото 188

Так использовать класс Savings может теперь любой программист, которому доступен соответствующий заголовочный файл, причём ему совершенно не надо вдаваться в детали реализации этого класса.

Директиваinclude заставляет препроцессор перед началом компиляции вставить - фото 189

«Директива#include заставляет препроцессор перед началом компиляции вставить вместо неё содержимое указанного в ней файла.»

[ Помни! ]

Встраиваемые функциичлены Функциячлен определённая непосредственно - фото 190

« Встраиваемые функции-члены

Функция-член, определённая непосредственно внутри класса, по умолчанию считается встраиваемой ( подставляемой,inline ) функцией ( если только не оговорено обратное, например с помощью опций командной строки компилятора ). Функции-члены, определённые в классе, по умолчанию считаютсяinline -функциями, потому что большинство функций-членов, определённых внутри класса, довольно малы, а такие маленькие функции являются главными кандидатами на подстановку. Тело встраиваемой функции подставляется компилятором непосредственно вместо оператора её вызова. Такая функция выполняется быстрее, поскольку от процессора не требуется осуществлять переход к телу функции. Однако при этом программы, использующие встроенные функции, занимают больше места, поскольку копии таких встраиваемых функций определяются один-единственный раз, а подставляются вместо каждого вызова.

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

Интервал:

Закладка:

Сделать


Стефан Дэвис читать все книги автора по порядку

Стефан Дэвис - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




С++ для чайников . отзывы


Отзывы читателей о книге С++ для чайников ., автор: Стефан Дэвис. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x