Redian新闻
>
请教 C++的一个困惑 (operator delete)
avatar
请教 C++的一个困惑 (operator delete)# Programming - 葵花宝典
c*a
1
【 以下文字转载自 Quant 讨论区 】
发信人: ccca (cc), 信区: Quant
标 题: 请教 C++的一个困惑 (operator delete)
发信站: BBS 未名空间站 (Fri Mar 21 20:59:41 2008), 转信
请看如下代码, 其结果是输出 4, 既调用了 A的operator delete(...)
由于 C++ 只能用 reference 和 pointer 实现 polymorphism.
但是如果 用pointer的话, 却无法调用正确的delete 释放内存。
个人认为问题很严重!(operator delete无法声明为 virtual)。
请牛人指点。
class A
{
public:
void operator delete(void* p, size_t size){cout << size;};

private:
int k;
};
class B:public A
{
public:
void operator delete(void* p, size
avatar
z*i
2
You don't define "delete" operator be virtual. You make destructor virtual.
See below.
#include
#include
using namespace std;
class A
{
public:
virtual ~A()
{
cout << "I am A\n";
}
//void operator delete(void* p, size_t size){cout << size << endl;};
private:
int k;
};
class B:public A
{
public:
virtual ~B()
{
cout << "I am B\n";
}
//void operator delete(void* p, size_t size){cout << size<
【在 c**a 的大作中提到】
: 【 以下文字转载自 Quant 讨论区 】
: 发信人: ccca (cc), 信区: Quant
: 标 题: 请教 C++的一个困惑 (operator delete)
: 发信站: BBS 未名空间站 (Fri Mar 21 20:59:41 2008), 转信
: 请看如下代码, 其结果是输出 4, 既调用了 A的operator delete(...)
: 由于 C++ 只能用 reference 和 pointer 实现 polymorphism.
: 但是如果 用pointer的话, 却无法调用正确的delete 释放内存。
: 个人认为问题很严重!(operator delete无法声明为 virtual)。
: 请牛人指点。
: class A

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。