monstr *m; ...
m -> ~monstr();
Бұл асыра жүктелген
new
операциясының көмегімен нақты көрсетілген
жады адресі бөлінген объектілер үшін керек болуы мүмкін. Объект деструкто-
рын ол қажет болмаған жағдайларда айқын түрде тікелей шақыру керек емес.
Операциялардың асыра жүктелуі
С++ тілі көптеген операциялардың əрекеттерін нақты көрсетілген кластың
объектілерімен бірге қолдану кезінде, олар бекітілген функцияларын орын-
дайтындай етіп қайта анықтауға мүмкіндік береді. Бұл өзіндік мəліметтер
типтерін дəл стандартты мəліметтер типтері сияқты қолдануға жол ашады.
Өзіндік операциялардың белгілерін енгізуге болмайды. С++ тілінде төменде
көрсетілген операциялардан басқа осы тілде бар барлық операцияларды асыра
жүктеуге болады:
. .* ?: :: # ## sizeof
Операцияларды асыра жүктеу арнайы түрдегі əдістер көмегімен (функция-
операциялар) жүзеге асырылады жəне келесі ережелерге бағынады:
□ операцияларды асыра жүктеу кезінде аргументтер саны, операция
басымдықтары жəне стандартты мəлімет типтерінде қолданылатын ас-
социация ережелері (оңнан солға немесе солдан оңға қарай) сақталады;
□ стандартты мəлімет типтері үшін операцияларды қайта анықтауға бол-
майды;
□ функция-операциялардың келісім бойынша берілген аргументтері болуы
мүмкін емес;
□ функция-операциялар мұраланады (= операциясынан басқасы);
□ функция-операциялардың
static
ретінде анықталуы мүмкін емес.
Функция-операцияны үш тəсілмен анықтауға болады: ол класс əдісі, не-
месе кластың достас функциясы, немесе қарапайым функция болуы керек.
Соңғы екі жағдайда функция класс типті, класқа нұсқауыш немесе сілтеме
типті кем дегенде бір аргументті қабылдауы керек
1
.
Функция-операция құрамында
operator
түйінді сөзі, одан кейін қайта
анықталатын операция белгісі орналасады:
Достарыңызбен бөлісу: |