gpt4 book ai didi

c++ 对象的存储类型,选择什么更好?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:48:10 26 4
gpt4 key购买 nike

没有 RTTI 和虚拟功能。

我遇到了 2 种不同的常见解决方案来提供对象的类型:

使用虚方法调用并将 id 保留在方法中:

class Base {
public:
virtual ~Base();
virtual int getType() const =0;
};
class Derived : public Base {
public:
virtual int getType() const { return DerivedID; }
};

使用内联方法调用并将 id 保留在基类中:

class Base {
int id_;
public:
virtual ~Base();
inline int getType() const { return id_; }
};

class Derived : public Base {
public:
Derived() { id_=DerivedID;}
};

一般来说什么是更好的选择,它们的优缺点是什么?

最佳答案

如果您选择第二个选项,在每个派生类中都有一个 ID,那么您创建的每个对象中都会有一个额外的成员。如果您使用虚函数的第一个选项,您将在 vtable 中有一个额外的指针,每个类只存在一次,而不是每个对象。如果类将有多个虚函数,第一个选项显然更好。即使不是,我认为它更符合人们的期望。

关于c++ 对象的存储类型,选择什么更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24562060/

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