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

一道面试题目 关于结构体和类
昨天去面试一家外企,问到结构体和类有何不同 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之间的主要区别
------解决方案--------------------
考官不靠谱啊