Lect04
.pdf4. Специальныеатрибуты класса.Областьвидимости.
«Объектно-ориентированное программирование»
доцентПриваловМ.В.
Донецк,ДонНТУ,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; }
};
Пример:локальнаяобласть
видимости
Created!
Created!
Hello!
Destroyed!
Created!
Hello!
Destroyed!
Created!
Hello!
Destroyed!
Destroyed!
Пространствоимен
Пространствоименотдельнаяобласть видимостисуникальными идентификаторами.
namespace <имя> {
// Описанияиопределения
}
using namespace <имя>;
или
using <полноеимя>;