c++ - 类中类的大小

标签 c++

为什么 A 类对象的 the 是 4 个字节(不考虑 B 类和 C 类)。

我如何创建对象 A 以便同时创建 B 和 C?

然后对象的大小会改变吗?如果否,那么对象 B 和 C 是否仍被视为对象 A 本身的一部分

class A
{
public:
        A()
        {
                a=9;
                //B objB; //you wont be able to call since A::B::B() is private
                //C objC; //same as above
        }
        int a;
        class B
        {
                B()
                {
                        b=10;
                }
                int b;
        };

        class C
        {
        public:
                int c,d,e,f,g;
        };
};

最佳答案

因为,在类 A 中,只有 int a; 是类范围内的成员变量,它被计为类的大小。

在创建对象之前,类本身不占用任何空间。您已经使用以下代码创建了对象,但是如果您将类 B 和 C 的构造函数设为公共(public)构造函数并将其添加到 A 的构造函数中,则代码将不会执行,因为 B 的构造函数是私有(private)的:

B objB; 
C objC;

在构造函数中是局部的,在构造函数执行完毕后释放。

关于c++ - 类中类的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51076074/

相关文章:

c++ - 使用 Visual Studio 2012 Express Version 引用 dll

c++ - C++ 中的系统调用打开一个新终端。 window

c++ - 什么构成了 RValues?

c++ - 有没有可以用来代替脚本的低级语言?

c++ - OpenGL 评估器仅部分点亮

C++ 越界读/写数组

c++ - 如何在不安装的情况下将 opencv 源文件包含为 cmake 依赖项?

c++ - 我无法创建窗口

c++ - "terminated by a zero"是什么意思?

c++ - 在另一个链表中插入一个链表