gpt4 book ai didi

c++ - malloc() 和虚函数有什么问题?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:51:08 25 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
C++: why is new needed?

当我的对象是包含虚函数的类的子类时,为什么我不能使用 malloc 为它们分配空间?这真是令人沮丧。有充分的理由吗?

下面的程序说明了这个问题。它在第 27 行出现段错误,我在那里调用 aa->f()

#include <iostream>
#include <cstdlib>

class A
{
public:
virtual int f() {return 1;}
};

class B
{
public:
int f() {return 1;}
};

class Aa : public A {};

class Bb : public B {};

int main()
{
Aa* aa = (Aa*)malloc(sizeof(Aa));
Aa* aan = (Aa*)new Aa();
Bb* bb = (Bb*)malloc(sizeof(Bb));
std::cout << bb->f() << std::endl;
std::cout << aan->f() << std::endl;
std::cout << aa->f() << std::endl;
return 0;
}

版本信息:g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com