struct不能定义无参的构造函数,那么new出来的时候是如何初始化的

struct不能定义无参的构造函数,那么new出来的时候是怎么初始化的?
对于一个普通的struct m我们可以

m obj=new obj();

那么:
(1)对于new的情况,编译器是自动为m生成了一个无参的构造函数吗,还是用了别的方法?
(2)换句话说:new一个class,和new一个struct,实际发生的事情有什么不同吗?

------解决方案--------------------
strcut是值类型,二class是引用类型

比如说,你能将一个int赋值成null不?但是一个指针可以被赋值成null。
你问的new操作就在值类型和引用类型的不同。值类型保存的就是值本身,一个值类型的数据保存在内存中的时候,是需要分配一定的内存空间, 然后将值放进去的,如果struct的某个成员没有值(或者为null)的时候,内存无法分配存储空间(因为内存不知道到底要存储多大的值),因此就无法实例化。而引用类型保存的是地址,地址是可以为空的,地址是可以用指针存储的,而指针就是一个int大小(内存只需要申请一个int大小的内存空间就足够了),不需要知道具体的值到底需要多大的内存空间,因此可以直接赋值成为null。我只能说道这里了。。。。我感觉我越说就越复杂,如果你还不懂的话,你可以去扩展学习一下指针的知识。

你用new这个方法的时候,调用的那个函数,比如new B(),其实就是调用的B类型的无参数构造函数,你可以试试,如果将某个类型的构造函数申明成为protected,或者private的话,你能new不?然后你就明白了。