#include <iostream>
using namespace std;
class A
{
public:
int c = 3;
int a = 1;
int b = 2;
};
int main(int argc, char* argv[])
{
cout<<sizeof(A)<<endl;
A a;
cout << a.a<< a.b<< a.c << endl;
return 0;
}
12
123
请按任意键继续. . .
类在定义时没有分配空间吗???
为什么sizeof(A)会是12个字节
类在定义时不可以初始化???
cout << a.a<< a.b<< a.c << endl;输出正常
4 个解决方案
#1
只能说现在的某些C++编译器越来越智能化,他会把你的类内初始化成员语句放入到默认的初始化函数中完成(你在反汇编代码中可以看到)。
类在定义时没有分配空间吗???
为什么sizeof(A)会是12个字节
这个更容易解释,sizeof并不是真正的函数,它只是个宏,它对任何类型变量的求值是在编译期而非执行期完成的。也就是说在执行期,size_t x = sizeof(A)已经变成了size_t x = 12这样常量赋值语句。
类在定义时没有分配空间吗???
为什么sizeof(A)会是12个字节
这个更容易解释,sizeof并不是真正的函数,它只是个宏,它对任何类型变量的求值是在编译期而非执行期完成的。也就是说在执行期,size_t x = sizeof(A)已经变成了size_t x = 12这样常量赋值语句。
#3
最好要写代码初始化,编码器的自动初始化是不确定的
#4
sizeof 是运算符
#1
只能说现在的某些C++编译器越来越智能化,他会把你的类内初始化成员语句放入到默认的初始化函数中完成(你在反汇编代码中可以看到)。
类在定义时没有分配空间吗???
为什么sizeof(A)会是12个字节
这个更容易解释,sizeof并不是真正的函数,它只是个宏,它对任何类型变量的求值是在编译期而非执行期完成的。也就是说在执行期,size_t x = sizeof(A)已经变成了size_t x = 12这样常量赋值语句。
类在定义时没有分配空间吗???
为什么sizeof(A)会是12个字节
这个更容易解释,sizeof并不是真正的函数,它只是个宏,它对任何类型变量的求值是在编译期而非执行期完成的。也就是说在执行期,size_t x = sizeof(A)已经变成了size_t x = 12这样常量赋值语句。
#2
#3
最好要写代码初始化,编码器的自动初始化是不确定的
#4
sizeof 是运算符