在C++;记住? 编译中包含的空C++类是否在运行时占用内存?如果是,我怎么知道

在C++;记住? 编译中包含的空C++类是否在运行时占用内存?如果是,我怎么知道,c++,class,memory,C++,Class,Memory,前 #包括 int main(){ INTA,b; //随机操作 a=100; b=a^0x2904af3e; a=b&0xf92c92db; std::cout一个未使用的类型是编译器可以安全忽略的。标准当然没有说明什么东西占用了多少空间,但是任何值得使用的编译器都会删除未使用的类型、函数或任何其他从未实际使用过的东西 但是,在上述情况下未使用意味着未使用:任何地方的代码都没有使用该名称。编译器仍然必须注意该名称存在,如果其他人试图用该名称声明一个定义不同的类,则会出现ODR冲突。哪些编译器不

#包括
int main(){
INTA,b;
//随机操作
a=100;
b=a^0x2904af3e;
a=b&0xf92c92db;

std::cout一个未使用的类型是编译器可以安全忽略的。标准当然没有说明什么东西占用了多少空间,但是任何值得使用的编译器都会删除未使用的类型、函数或任何其他从未实际使用过的东西

但是,在上述情况下未使用意味着未使用:任何地方的代码都没有使用该名称。编译器仍然必须注意该名称存在,如果其他人试图用该名称声明一个定义不同的类,则会出现ODR冲突。哪些编译器不必报告


即使类型从未用于声明对象,如果您使用该名称,编译器也可能必须生成一些关于该类型的数据。例如,如果您对该名称调用
typeid
。编译器必须静态创建有关该类型的信息,并将其绑定到您的可执行文件中。

不,没有。@NeilButterworth我回来了使用sizeof时为1字节(空)我正在使用GNU C++编译器。如果您实例化它的话,这个类的实例将占用内存的大小。如果您不实例化它,它就不会占用任何内存。我想您可以在这里找到答案。NealButValk OK。谢谢您的澄清。因此,在运行时,类本身不会有任何内存开销。
#include <iostream>

int main() {
    int a, b;

    // random operations
    a = 100;
    b = a ^ 0x2904af3e;
    a = b & 0xf92c92db;

    std::cout << a << " " << b << std::endl;

    return 0;
}

// does this take any memory?
class Empty {

};