因为只有非静态类成员变量在新生成一个object的时候才需要自己的副本 。所以每个非静态成员变量在生成新object需要内存 , 而function是不需要的 。
3 sizeof 与 strlen 区别
- sizeof 是一个操作符 , strlen 是库函数 。
- sizeof 的参数可以是数据的类型 , 也可以是变量 , 而 strlen 只能以结尾
- 编译器在编译时就计算出了 sizeof 的结果 , 而 strlen 函数必须在运行时才能计算出来 。并且 sizeof 计算的是数据类型占内存的大小 , 而 strlen 计算的是字符串实际的长度 。
- 数组做 sizeof 的参数不退化 , 传递给 strlen 就退化为指针了 。如:
int ss[20]="0123456789"; sizeof(ss)=80, //ss表示在内存中的大小 , 20*4 。 strlen(ss) //错误 , strlen的参数只能是char* , 且必须是以“”结尾的 。 char *ss="0123456789"; sizeof(ss)=4, //ss是指向字符串常量的字符指针 。 sizeof(*ss)=1, // *ss是第一个字符 。
参考资料- https://www.cnblogs.com/Western-Trail/p/10326180.html
- 《C/C++实践进阶之道》
【C/C++基础之sizeof使用】
推荐阅读
- Java开源框架之SpringMVC原理及源码解析
- C++构造函数的三种写法
- 外包面试之旅
- 苦尽甘来茶道人生,茶道之真饮茶之人要怀有颗真心
- 行走茶山之寻找革登茶,革登茶山
- PLC编程语言之争:谁才是"一哥"
- 大英博物馆的镇店之宝 大英博物馆三大镇馆之宝
- 宇宙生命之谜提出问题并解决 宇宙生命之谜主要讲述了什么没有生命存在的原因
- 中国历史上夏朝之前是什么朝代 夏朝之前还有什么朝代
- 夏威夷火山喷发视频 夏威夷火山之谜