Advertisement

明确构造函数 明确构造函数

阅读量:

1.问题起源与背景分析

在查阅Slicer源代码的过程中,遇到了被explicit关键字修饰的构造函数,对此感到较为困惑:

复制代码
>     explicit qSlicerIGSReaderModule(QObject *parent=0);
>  
> ```

以下将对这一问题进行阐述。


## 2.关于构造函数的隐式转换

根据既定规则,**仅包含单一参数的构造函数同样会定义一种隐式转换机制**,该机制能够将与该构造函数相关联的数据类型转换为对应的类实例,具体示例如下:
复制代码
  1. class String {
复制代码
  2. String ( const char* p ); // 用C风格的字符串p作为初始化值

  3. //…

  4. }

  5. String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello”);
复制代码

然而,在某些情况下,可能并不需要进行此类隐式转换,例如以下情形:

复制代码
>       1. class String {

>  
>       2.    String ( int n ); //本意是预先分配n个字节给字符串

全部评论 (0)

还没有任何评论哟~