刚学了一点C#,感觉绝大部分和C++是一致的,上课听到C#类constructor有个小疑问,
C#是先执行默认constructor再去执行用户定义constructor,这和C++里面有点不同。可能是编译器问题,C++里如果用户定义了constructor()无参,则内建constructor不会执行。
经过和童鞋讨论,貌似就是这样。抛开编译器原因,我来验证一下。使用VS和Code::Blocks。
显然,先初始化a=0, b=0,再由Test()改变a=1。和课上讲的一致。
同样的类,C++程序里b输出的就是temp,说明没有执行内建constructor,直接执行了我写的constructor。
把constructor去掉,默认constructor会把a, b都初始化为0。
Bingo,貌似是我想的这样(如果不是因为编译器不同的话)。这种小问题可能被忽略,不清楚却有潜在的bug。
我不得不说C#与C++有太多相似,它们不同的地方正是我们要留心的地方。