关于explicit构造函数
时间:2017-01-06作者:华清远见
按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:
class X
如果像下面这样声明类对象:
假如构造函数改成下面的形式 : 从此例子中可以看到,explicit对构造函数起的作用是:抑制了隐式装转换。 但是有的时候可能会不需要这种隐式转换,如下:
class X 当调用 fun(2)的时候:
程序打印:X(int)。和程序员期待的不同。 给构造函数加上explicit后:
编译器给出了错误信息,这就避免了在程序员毫不知情的情况下出现错误。
相关资讯
发表评论
|