sky*_*oor 4 c++ reference sizeof
假设我有一堂课
class Foo {
:
:
}
Run Code Online (Sandbox Code Playgroud)
我有另一个功能
void getf( Foo &f) {
:
:
std::cout<<sizeof f<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
在我处理数据并将大量数据分配给f(包含在Foo成员中的向量)之后,我需要f对象的大小
但是,正如我上面所做的那样,我总是得到16,这是参考的大小.
我做错了什么吗?怎么做?
谢谢!
sizeof返回类型的大小.通常是时间,如在a的情况下,Vector类型的大小不一定包括类型可能指向的所有内容的累积大小.例如,类型:
class Foo {
char* chars
}
Run Code Online (Sandbox Code Playgroud)
...将显示相同的 sizeof结果,无论是chars指向单个字节还是指向40Kb字符串.
根据此IBM参考,sizeof应用于引用将返回引用对象的大小:
结果是引用对象的大小.
所以,我认为问题不在于sizeof返回引用本身的大小,而是Foo保持指向其他类型的指针.
还要记住,它sizeof不会告诉您vector(或使用堆的任何其他容器)内的数据大小.请考虑以下示例:
struct Foo {
std::vector<int> v;
}
int main(int argc, char **argv) {
Foo foo;
std::cout << sizeof(foo) << std::endl;
foo.v.push_back(1);
std::cout << sizeof(foo) << std::endl;
}
Output:
24
24
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1006 次 |
| 最近记录: |