1. 对于楼主的问题,答案是效果是相同的,编译器生成的代码应该都是一样的(除非你的编译器是玩具级的:P),而且Bjarne Stroustrup也倾向于在这种情况下用int a=10
2. class t{};
t t0;
t t1(t0);
t t2 = t0;
t t3 = t(t0);
实际上t2,t3都等价于t1的形式,没有区别
而对于CNonBuildIn a = 10;这样的例子,仍然是调用带一个参数的constructor,而不会有临时对象(还是那个前提,你的编译器不是玩具级,弱智型的)