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

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

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

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

empty-line
1
empty-line
4

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

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

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

Интервал:

Закладка:

Сделать

Значение 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" ;

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

system( "PAUSE" ) ; return 0 ;

}

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

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

Вызов someFn( Student &)

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

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

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

Press any key to continue...

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

Передача объекта по ссылке всего лишь другой способ передачи в функцию - фото 199

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

[ Советы ]

►Зачем, использовать указатели и ссылки...174

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

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

Интервал:

Закладка:

Сделать

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

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


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

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

x