Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lect04

.pdf
Скачиваний:
5
Добавлен:
06.02.2016
Размер:
434.07 Кб
Скачать

4. Специальныеатрибуты класса.Областьвидимости.

«Объектно-ориентированное программирование»

доцентПриваловМ.В.

Донецк,ДонНТУ,2011

Неявныйуказательthis

this - указатель,которыйвC++ автоматическидобавляетсяксписку атрибутовлюбогокласса.Всвязис этимсчитается,что

this - этонеявныйуказатель

this указываетнатекущийэкземпляр класса.

Примериспользованияthis

class MyClass { private:

int x; public:

MyClass() {}

MyClass(int x);

MyClass GetObject();

};

Примериспользованияthis

// Сценарий 1 - разрешение // конфликта именования

MyClass::MyClass(int x) { } this->x = x;

// Сценарий 2 - получение // копии объекта

MyClass MyClass::GetObject() { } return *this;

ОбластьвидимостивC++ (scope)

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

ВC++ поддерживаютсятриобласти видимости:

локальнаяобластьвидимости;

областьвидимостипространстваимен;

областьвидимостикласса.

Локальнаяобластьвидимости

ВС++клокальнойобластивидимости относитсянетолькоопределение функции,ноиблок!

Такимобразом,каждыйсоставной операторсоздаётотдельную локальнуюобласть.Этаобласть влияетнажизненныйцикл переменных.

Пример:локальнаяобласть видимости

#include "stdafx.h" #include <iostream> using namespace std;

class ScopeTest { public:

ScopeTest() { cout << "Created!" << endl;}

~ScopeTest() {cout << "Destroyed!" << endl; }

void SayHello() { cout << "Hello!" << endl; }

};

}
}
cin.ignore(); return 0;
ScopeTest b; b.SayHello();
for (int i=0; i<3; i++)
{
Пример:локальнаяобласть
видимости
int _tmain(int argc, _TCHAR* argv[]) { ScopeTest a;

Пример:локальнаяобласть

видимости

Created!

Created!

Hello!

Destroyed!

Created!

Hello!

Destroyed!

Created!

Hello!

Destroyed!

Destroyed!

Пространствоимен

Пространствоименотдельнаяобласть видимостисуникальными идентификаторами.

namespace <имя> {

// Описанияиопределения

}

using namespace <имя>;

или

using <полноеимя>;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]