MainClass *mb[1];
Class1 *m1;
cout << "Constructor type (1 - no parameters || 2 - with parameters): ";
int choose;
cin >> choose;
if (choose == 1) {
mb[1] = new Class1;
}
else if (choose == 2) {
mb[1] = new Class1("Red", 1);
}
m1 = dynamic_cast<Class*>(mb[1]);
m1->printEverything();
getchar();
之后,Windows 10抛出“Program1.exe停止工作”。 试图添加删除mb [1],但没有运气。
析构函数:
~Class() {
cout << endl;
getchar();
}
如何删除派生类对象?
答案 0 :(得分:1)
解除分配应该通过以下方式完成:
delete mb[0]
您应该使用mb [0]访问数组的第一个元素
答案 1 :(得分:1)
您需要将对象存储在foreach ($this->getRequest()->getCookie() as $name => $value) {
echo 'Campo: ' . $name . ' with value ' . $value . '<br />';
}
(而不是public function callerAction()
{
$cookie = new \Zend\Http\Header\SetCookie();
$cookie->setName('foo')
->setValue('bar')
->setDomain('gnsys.local')
->setPath('/')
->setHttponly(true);
/** @var \Zend\Http\Response $response */
$response = $this->getResponse();
$response->getHeaders()->addHeader($cookie);
return $this->redirect()->toUrl('/publico/login');
}
)中,因为在C和C ++中数组索引是基于0的,并且您只为mb[0]
中的一个元素保留了空间。读取或写入mb [1]会在程序中产生未定义的行为,通常会导致崩溃。
取消分配您的对象必须使用mb[1]
。 不,mb
用于解除分配delete mb[0]
的内存。