Программирование >>  Дополнительные возможности наследования 

1 ... 242 243 244 [ 245 ] 246 247 248 ... 265


6. Жучки: найдите ошибку в следуюшем фрагменте программы:

int main() {

int SomeVariable = 5;

cout SomeVariable: SomeVariable \ n ; int *pVar = & SomeVariable; pVar = 9;

cout SomeVariable: *pVar \ n ; return 0; }

Возможно, профаммист хотел присвоить число 9 переменной, на которую указывает указатель pVar. К сожалению, число 9 было присвоено самому указателю pVar, поскольку был опушен оператор косвенного доступа ( ). Если указатель pVar используется для присвоения ему значения, такое профаммирование неминуемо приведет к тяжелым последствиям.

День 9

KoimpaibHbie тщи

1. В чем разница между ссылкой и указателем?

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

2. Когда нужно использовать именно указатель, а не ссылку?

Если в профамме нужно назначить указателю новую переменную или если указатель нужно сделать нулевым.

3. Что возврашает оператор new, если для создания нового объекта недостаточно памяти? Нулевой указатель.

4. Что представляет собой константная ссылка?

Это сокрашенный вариант определения ссылки на константный объект.

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

Передача объекта как ссылки означает, что локальная копия для этого объекта создаваться не будет. Этого можно достичь путем передачи в качестве параметра ссьшки или указателя.

Упражнения

1. Напишите профамму, которая объявляет переменную типа int, ссылку на значение типа int и указатель на значение типа int. Используйте указатель и ссьшку для управления значением переменной типа int. int main() {

int varOne;

int& rVar = varOne;



int* pVar = &varOne;

rVar = 5;

*pVar = 7;

return 0;

2. Напишите профамму, которая объявляет константный указатель на постоянное целое значение. Инициализируйте его, чтобы он указывал на целочисленную переменную varOne. Присвойте переменной varOne значение 6. Используйте указатель, чтобы присвоить переменной varOne значение 7. Создайте вторую целочисленную переменную varTwo. Переназначьте указатель, чтобы он указывал на переменную varTwo. Пока не компилируйте это упражнение.

int main() {

int varOne;

const int ♦ const pVar = AvarOne;

pVar = 7;

int varTwo;

pVar = &varTwo; return 0; }

3. Скомпилируйте профамму, написанную в упражнении 2. Какие действия компилятор считает ошибочными? Какие строки генерируют предупреждения?

Нельзя присваивать значение константному объекту и нельзя переназначать константный указатель.

4. Напишите профамму, которая создает блуждаюший указатель.

int mainO {

int * pVar; *pVar = 9; return 0; }

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

int mainO {

int varOne;

int * pVar = &varOne;

*pVar = 9;

return 0;

6. Напишите профамму, которая приводит к утечке памяти.

#include <iostream.h>

int * FuncOneO; int main()



int * pint = FuncOneO;

cout << the value of pint in main is: *plnt endl; return 0;

int FuncOneO {

int * pint = new int (5);

cout the value of pint in FuncOne is; *plnt endl; return pint;

>

7. Исправьте программу из упражнения 6.

#include <iostream.h>

int FuncOneO; int mainO {

int theint = FuncOneO;

cout << the value of pint in main is: theint << endl; return 0;

int FuncOneO {

int pint = new int (5);

cout << the value of pint in FuncOne is: pint endl; delete pint; return temp;

8. Жучки: что неправильно в этой программе?

1 2 3 4 5 6 7 8 9

10 11 12

#include <iostream.h>

class CAT {

public:

CAT(int age) { itsAge = age; } CAT(){ }

int GetAgeO const { return itsAge;} private:

int itsAge;



1 ... 242 243 244 [ 245 ] 246 247 248 ... 265

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика