В нескольких примерах на просторах сети можно найти следующие вещи. Допустим имеем несколько определений:
class foo{
protected:
int* numb;
public:
foo(int* ptr_to_numb){
this->number = ptr_to_numb;
}
~foo(){
delete this->numb;
}
}
void show_int(int* ptr_to_number){
std::cout << *ptr_to_number << std::endl;
}
Затем выполним:
foo exmpl(new int(7));
show_int(new int(7));
Что будет с аргументами, переданными в конструктор и функцию? (Если не принимать во внимание оптимизаций компилятора)
В вашем примере delete уже наличествует в деструкторе foo. Именно оно, по замыслу автора класса, и должно удалить объект, указатель на который вы передавали в конструктор.
Что касается варианта с функцией, то в вашем варианте вы можете либо удалить объект внутри функции, либо где-то запомнить указатель на него для долгосрочного хранения (и последующего удаления).
То, что написано в варианте с функцией у вас сейчас, порождает классическую утечку памяти - объект не удаляется и доступ к нему теряется безвозвратно.
Продвижение своими сайтами как стратегия роста и независимости