在类中有一个整型的数据成员,程序中需要实现一个整数直接赋值为一个类对象,赋值结果是该类对象的被赋值成员值为赋值的整数。 但是在默认情况下是不能通过编译的,因为不允许类与整数进行复制运算。 如果在类中定义一个特殊的构造函数,这样在进行该类对象和整数赋值运算时将自动转换该构造函数。 即下图定义构造函数——CUser(int nData) 可以实现一个整数直接赋值为一个类对象的语句——CUser User = 2; 语句“CUser User = 2;”实际是调用了CUser(int nData)构造函数,它与“CUser User(2);”语句的作用相同。 当然在开发应用程序时,有时需禁止构造函数的自动转换功能,因为这样容易令人误解,容易出现问题。 在构造函数前使用explicit关键字,可以阻止构造函数的自动转换功能。 此时,语句 “CUser User = 2;”将无法通过编译,而语句“CUser User(2);”是完全合法的。 使用语句 “CUser User = 2;”将会出现下图的错误提示 转载于:https://my.oschina.net/u/3418740/blog/876396