1、单参数的构造函数:单参数的构造函数可以将构造函数的参数类型的变量直接复制给该类对象。
如有构造函数 A::A(int m){...}; 则可以使用 A a = 1 进行初始化。原理是将用 1 创建一个临时对象,在进行赋值。
对于 A a; a = 3; 这两条语句调用两次构造函数(一次默认,一次单参数构造函数)一次析构函数(赋值语句会创建一个临时对象)
2、对于 A a = 1.1 依然成立,1.1先被强制转换成 int ,在被转换成 A类对象。
3、对于 fun( A a, int m), 可以使用 fun(1.2, 2)调用,其中1.2 先被转换成int 型, 再被转成A类对象。
4、对于 A fun(){ return 1 } 合法,1会被转换成 A类型。
5、若将 A a; int m = a; 需要用到转换函数,转换函数必须是类方法,不能指定返回类型,不能有参数 。
如: operator double();没有指定类型。过多的转换函数将导致二义性问题。