在C++中,与继承没有虚函数的基类相关的开销(内存/cpu)是多少?它和类成员的直接copy+paste一样好吗?
class a
{
public:
void get();
protected:
int _px;
}
class b : public a
{
}与
class a
{
public:
void get();
protected:
int _px;
}
class b
{
public:
void get();
protected:
int _px;
}发布于 2009-08-14 21:29:11
与copy和past相比,使用继承时可能会有轻微的内存开销(由于填充),请考虑以下类定义:
struct A
{
int i;
char c1;
};
struct B1 : A
{
char c2;
};
struct B2
{
int i;
char c1;
char c2;
};sizeof( B1 )可能是12,而sizeof(B2)可能只是8。这是因为基类A被单独填充到8字节,然后B1被再次填充到12字节。
发布于 2009-08-14 18:06:13
它的编译时间会稍长一些,而且不会有额外的运行时开销。从优化器的角度来看,非虚方法与过程是相同的--它们可以仅使用它们的内存地址来调用,而不需要从虚方法表中获得开销。
发布于 2009-08-14 19:06:36
如果您忘记了虚拟继承,那么在内存和性能方面,拥有一个基类就等同于拥有一个相同类的成员。除了有时它可能更好(例如,一个空类的大小至少为1,但拥有一个空的基类通常没有开销)。
https://stackoverflow.com/questions/1279290
复制相似问题