读书人

一道面试题目 关于结构体和类,该如何处

发布时间: 2012-06-10 14:03:15 作者: rapoo

一道面试题目 关于结构体和类
昨天去面试一家外企,问到结构体和类有何不同 c++环境下。面试官说结构体是分配在栈上的 类是分配在堆上的。我觉得这个分配在哪里跟你如何声明有关系啊。例如

C/C++ code
void main(){string s("sfaf"); //这个s 就不是分配在main函数的栈上了么?struct  s a = new struct s();// c++结构体有构造函数 这样不就分配在堆上了? } 

是我理解的有问题 还是面试官说错了

[解决办法]
结构是值类型:值类型在堆栈上分配地址,所有的基类型都是结构类型,例如:int 对应System.int32 结构,string 对应 system.string 结构 ,通过使用结构可以创建更多的值类型。类是引用类型:引用类型在堆上分配地址。

是这个意思么?
[解决办法]
我一直认为通过malloc和new申请的空间才会分配在堆上,所以类如果不会通过new来申请的应该是在栈上,不知道对不对。
[解决办法]
这考官估计想说的是new出来的类对象吧……
[解决办法]
http://www.cppblog.com/oosky/archive/2006/01/21/2958.html
[解决办法]
鬼扯

C++中的struct就是默认public的class,保留这个关键字只是为了和c尽可能兼容
[解决办法]
面试官绝对的胡说八道。

对于C++来说,出来缺省地,类的成员是private的,结果的成员时public的,其它没有区别。

对于C#来说,struct是值类型,总会被分配在栈上,这时候会和class不一样。

面试官自己没搞清楚。
[解决办法]
参考:
C#中struct和class之间的主要区别
[解决办法]
考官不靠谱啊

读书人网 >C++

热点推荐