[q]VC++

marizha

почему функция, получающая в качестве аргумента некий класс, по завершению "обнуляет" его:
void Myfunc( Myclass A)
{
}
вернее не обнуляет, а запускает диструктор начального класса... или мне это кажется, но указатели, содержащиеся внутри класса удаляются по завершении функции, а это происходит тоько в диструкторе ? ведь я не передаю функции указателя? или это встроено по-умолчанию, то что функция получает указатель на класс в любом случае, но зачем же его обнулять...

freezer

потому что параметр передается по значению!

ma3yp

Потому что передача параметров происходит по значению.
Когда ты вызываешь Myfunc(A то создается новый экземпляр класса с вызовом copy-конструктора и значение этого экзепляра передается в функцию. По завершению работы функции для экземпляра, естественно, вызывается деструктор.
Правильное объявление в этом случае:
void Myfunc ( Myclass & A)
Оставить комментарий
Имя или ник:
Комментарий: