Abstract class size

How to find the size of an abstract class?

class A
{
    virtual void PureVirtualFunction() = 0;
};

Since this is an abstract class, I cannot create objects of this class. How can I find the size of an abstract class A using the sizeof operator?

+3
source share
7 answers

You can use the operator sizeof:

int a_size = sizeof(A);
+8
source

, - , . , "" . sizeof(A), - ( ) sizeof(A) , A .

:

#include <iostream>

class A {};
class B {};
class C {};
class D {};

class Z : public A, public B, public C, public D {};

int main() { 
     std::cout << "sizeof(A) = " << sizeof(A);
     std::cout << "sizeof(Z) = " << sizeof(Z);
     return 0;
}

, sizeof(A) 1. , sizeof(Z) , , (V++, g++) .

+3

, sizeof , :

sizeof (A)

, ? , , .

+2

'sizeof (A)' , .

0

. sizeof(A).

0

, sizeof,

A *p = NULL;

*p sizeof

size_t size = sizeof *p;

, sizeof .

0

As far as I know, the size of an abstract class is equivalent to the size of an int by default. so the 32-bit machine size above the class is 4 bytes.

-2
source

Source: https://habr.com/ru/post/1741042/


All Articles