1)构造函数只能在程序诞生的时候调用,不能在其他时候调用,
有返回值,就意味着有选择权,即使返回的是void,程序也可以随意调用构造函数,这样就威胁到程序的安全性
2)降低编译器的复杂度
如果有返回值,那么编译器就不能不去做如何处理
3)设置返回值,会造成程序的二义性
例如: void fun(int a); (1)
void fun(const A& a) {}; (2)
fun(A); (3)
那么(3)调用哪个,对于(3)我们希望调用(2),但构造(A)有返回值int,应该调用(1), 是调用哪个函数呢,于是我们的重载体系,乃至整个C++的语法体系都会面临二义性问题
class A
{
int A(); //如果设置返回值
Virtual ~A();
};
4)构造函数没有返回值,不代表他没有返回值,它默认返回的是它调用的对象(默认就是自己类的类型)