由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 请教 C++的一个困惑 (operator delete)
相关主题
问题C++ Q93 - Q95 (转载)
C++ formatted output question问个C++中重复删除指针的问题
纯虚函数问题关于数组
大侠给解释下c++为何会允许这种polymorphism?C++里get array size的问题 (转载)
[合集] question about a static pointer in a member functionWhat does int & mean? C/C++ question
菜鸟请教smart pointerC++ Q87: What is wrong with this swap function? (转载)
Why this is a dangling pointerC++class指针转换
听说pointer to member function只支持最多128个virtual functi这个function pointer最后的那个int是什么意思?
相关话题的讨论汇总
话题: delete话题: operator话题: size话题: void话题: c++
进入Programming版参与讨论
1 (共1页)
c**a
发帖数: 316
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
z******i
发帖数: 59
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

1 (共1页)
进入Programming版参与讨论
相关主题
这个function pointer最后的那个int是什么意思?[合集] question about a static pointer in a member function
C++小插曲菜鸟请教smart pointer
C++ pointer problemWhy this is a dangling pointer
C++中怎么传递std::hex这样的参数啊听说pointer to member function只支持最多128个virtual functi
问题C++ Q93 - Q95 (转载)
C++ formatted output question问个C++中重复删除指针的问题
纯虚函数问题关于数组
大侠给解释下c++为何会允许这种polymorphism?C++里get array size的问题 (转载)
相关话题的讨论汇总
话题: delete话题: operator话题: size话题: void话题: c++