class Base
{
private:
int nID;
friend int fnDeleteBase(Base* base);
public:
Base(int baseID):nID(baseID) { cout << "Base Constructed with value" << endl; }
Base() : nID(5){cout << "Base Constructed WITHOUT value" << endl; }
~Base() { cout << "Base class object killed " << endl; }
};
int fnDeleteBase(Base* base) // Line 1
{
delete base; // Line 2 - important
cout << "Base object deleted " << endl;
return (1);
}
int main()
{
Base aBase; // Line 3
try
{
int i = fnDeleteBase(&aBase); // Line 4
}
catch(...)
{
cout << "Exception handled " << endl;
}
return (0);
}
Вышеупомянутый фрагмент кода, который я отлаживал. Я не могу войти в строку 2, где я удаляю базовый объект. как только я пытаюсь шагнуть или запустить через линию 2, управление идет и я должен убить отладки или выполненияЯ теряю контроль и не могу отлаживать
Выход я получаю:
Base Constructed (any of the construction is valid)
Base class Object killed
Однако все работает отлично, и если Строка 3 изменена на Base * aBase = new Base();
. Выход на консоли:
Base Constructed (any of the construction is valid)
Base class Object killed
Base object Deleted
Может ли кто-нибудь поделиться техническими данными позади двух?
какая среда программирования вы используете, Rajesh? –
visual studio ultimate 2010 –
BTW Я сначала попробовал fnDeleteBase с аргументом в качестве ссылки на базу. результат был таким же, как в первом случае. то я попытался с указателем. –