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

Тут можно читать онлайн Стефан Дэвис - С++ для чайников . - бесплатно полную версию книги (целиком) без сокращений. Жанр: 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

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

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

Интервал:

Закладка:

Сделать

Использование стрелок...170

Использование для разыменования указателей на объекты оператора * со скобками будет прекрасно работать. Однако даже самые твёрдолобые программисты скажут вам, что такой синтаксис разыменования очень неудобен.

Для доступа к членам объекта С++ предоставляет более удобный оператор -> , позволяющий избежать неуклюжей конструкции со скобками и оператором * ; таким образом, pS -> gpa эквивалентно ( *pS ).gpa . В результате получаем следующий преобразованный код рассмотренной ранее программы.

int main( int argc , char* pArgs[ ] )

{

Student s ;

Student* pS = & s ; /* Создаём указатель на объект s */

/* Обращаемся к члену gpa того объекта, на который указывает pS ( теперь всё работает правильно ) */

pS -> gpa = 3.5 ;

return 0 ;

}

Этот оператор используется гораздо чаще, поскольку его легче читать ( хотя обе формы записи совершенно тождественны ).

_________________

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

►Передача объектов функциям...171

Передача указателей функциям — один из способов выразить себя в области указателей.

Вызов функции с передачей объекта по значению...171

Как вы знаете, С++ передаёт аргументы в функцию по ссылке при использовании в описании символа &( см. главу 8, "Первое знакомство с указателями в С++"). Однако по умолчанию С++ передаёт функции только значения аргументов. ( Обратитесь к главе 6, "Создание функций", если вы этого не знали. ) То же касается и составных, определённых пользователем объектов: они также передаются по значению.

/* PassObjVal — попытка изменить значение объекта в функции оказывается неуспешной при передаче объекта по значению */

#include

#include

#include

using namespace std ;

class Student

{

public :

int semesterHours ;

float gpa ;

} ;

void someFn( Student copyS )

{

copyS.semesterHours = 10 ;

copyS.gpa = 3.0 ;

cout << "Значение copyS.gpa = "

<< copyS.gpa << "\n" ;

}

int main( int argc , char* pArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

Student s ;

s.gpa = 0.0 ;

/* Вывод значения s.gpa до вызова someFn( ) */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

/* Передача существующего объекта */

cout << "Вызов someFn( Student )\n" ;

someFn( s ) ;

cout << "Возврат из someFn( Student )\n" ;

/* Значение s.gpa остаётся равным 0 */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

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

system( "PAUSE" ) ; return 0 ;

}

_________________

171 стр. Глава 14. Указатели на объекты

В этом примере функция main( ) создаёт объект s , а затем передаёт его в функцию someFn( ) .

Осуществляется передача по значению не самого объекта а его копии - фото 195

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

[ Помни! ]

Объект copyS начинает своё существование внутри функции someFn( ) и является точной копией объекта s из main( ) . При этом любые изменения содержимого объекта copyS никак не отражаются на объекте s из функции main( ) . Вот что даёт программа на выходе.

Значение sgpa 0 Вызов someFn Student Значение copySgpa 3 Возврат - фото 196

Значение s.gpa = 0

Вызов someFn( Student )

Значение copyS.gpa = 3

Возврат из someFn( Student )

Значение s.gpa = 0

Press any key to continue...

Вызов функции с передачей указателя...172

Вместо того чтобы передавать объект по значению, можно передавать в функцию указатель на объект.

/* PassObjPtr — изменение значения объекта в функции при передаче указателя на объект */

#include

#include

#include

using namespace std ;

class Student

{

public :

int semesterHours ;

float gpa ;

} ;

void someFn( Student* pS )

{

pS -> semesterHours = 10 ;

pS -> gpa = 3.0 ;

cout << "Значение pS -> gpa = "

<< pS -> gpa << "\n" ;

}

int main( int argc , char* pArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

Student s ;

s.gpa = 0.0 ;

/* Вывод значения s.gpa до вызова someFn( ) */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

/* Передача существующего объекта */

cout << "Вызов someFn( Student* )\n" ;

someFn( & s ) ;

cout << "Возврат из someFn( Student* )\n" ;

/* Значение s.gpa теперь равно 3.0 */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

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

system( "PAUSE" ) ; return 0 ;

}

_________________

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

В этом примере аргумент, передаваемый в someFn( ) , имеет тип указателя на объект Student , что записывается как Student* ( это отражает способ вызова программой функции someFn( ) ). Теперь вместо значения объекта s в функцию someFn( ) передаётся указатель на объект s . При этом соответственно изменяется и способ обращения к аргументам функции внутри её тела: теперь для разыменования указателя pS используются операторы-стрелки.

На этот раз вывод программы имеет следующий вид.

Значение sgpa 0 Вызов someFn Student Значение pS gpa 3 - фото 197

Значение s.gpa = 0

Вызов someFn( Student *)

Значение pS -> gpa = 3

Возврат из someFn( Student *)

Значение s.gpa = 3

Press any key to continue...

Передача объекта no ссылке...173

Оператор ссылки описан в главе 9, "Второе знакомство с указателями", и может применяться для пользовательских объектов так же, как и для всех остальных.

/* PassObjRef — изменение значения объекта в функции при передаче с использованием ссылки */

#include

#include

#include

using namespace std ;

class Student

{

public :

int semesterHours ;

float gpa ;

} ;

void someFn( Student & refS )

{

refS.semesterHours = 10 ;

refS.gpa = 3.0 ;

cout << "Значение refS.gpa = "

<< refS.gpa << "\n" ;

}

int main( int argc , char* pArgs[ ] )

{

setlocale ( LC_ALL , ".1251" ) ; /* печать кириллицы */

Student s ;

s.gpa = 0.0 ;

_________________

173 стр. Глава 14. Указатели на объекты

/* Вывод значения s.gpa до вызова someFn( ) */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

/* Передача существующего объекта */

cout << "Вызов someFn( Student & )\n" ;

someFn( s ) ;

cout << "Возврат из someFn ( Student & )\n" ;

/* Значение s.gpa теперь равно 3.0 */

cout << "Значение s.gpa = " << s.gpa << "\n" ;

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

Интервал:

Закладка:

Сделать


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

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




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


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


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

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