首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有默认值的单参数构造函数是否可以进行隐式类型转换

问具有默认值的单参数构造函数是否可以进行隐式类型转换
EN

Stack Overflow用户
提问于 2010-05-06 01:04:59
回答 1查看 657关注 0票数 1

我理解使用explicit关键字来避免隐式类型转换,这种类型转换可能发生在单个参数构造函数中,或者在具有多个参数的构造函数中,只有第一个参数没有默认值。

然而,我想知道,当涉及到隐式转换时,具有默认值的单参数构造函数与没有默认值的构造函数的行为是否相同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-06 01:09:04

缺省值的存在不会阻止单参数ctor用于隐式转换:如果想要停止转换,确实需要添加explicit。

例如:

代码语言:javascript
复制
#include <iostream>

struct X {
  int i;
  X(int j=23): i(j) {}
};

void f(struct X x) {
  std::cout << x.i << std::endl;
}

int main() {
  f(15);
  return 0;
}

正确编译和运行:

代码语言:javascript
复制
$ g++ -Wall -pedantic a.cc
$ ./a.out
15
$ 

正确地说,如果您希望int隐式地成为struct X的话。=23部分,即构造函数的一个参数的默认值,不会阻止这一点。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2775277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档