AFAIK,不sizeof应该返回0,但是以下程序:
#include <iostream>
class A {
public:
int a[0];
};
int main() {
A obj;
std::cout << sizeof(obj) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出0.为什么?
Kon*_*lph 13
C++不允许零大小的数组.符合标准的编译器拒绝代码,例如:
$ g++-4.8 -pedantic-errors main.cpp
main.cpp:5:14: error: ISO C++ forbids zero-size array 'a' [-Wpedantic]
int a[0];
^
Run Code Online (Sandbox Code Playgroud)
所以sizeof这里的行为根本不相关.GCC允许它(不-pedantic)作为编译器扩展.
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |