Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C+的应用+;显式构造函数 我是C++ 11的新手。我找到了显式构造函数的这个术语。然而,我并没有找到任何关于显式构造函数的好解释。你能解释一下在什么情况下我应该使用显式构造函数吗_C++_Move_Explicit - Fatal编程技术网

C+的应用+;显式构造函数 我是C++ 11的新手。我找到了显式构造函数的这个术语。然而,我并没有找到任何关于显式构造函数的好解释。你能解释一下在什么情况下我应该使用显式构造函数吗

C+的应用+;显式构造函数 我是C++ 11的新手。我找到了显式构造函数的这个术语。然而,我并没有找到任何关于显式构造函数的好解释。你能解释一下在什么情况下我应该使用显式构造函数吗,c++,move,explicit,C++,Move,Explicit,提前感谢。非显式单参数构造函数可以称为转换构造函数。这是因为它们允许编译器从另一种类型(参数类型)隐式转换为对象 这种隐式转换并不总是需要的,可以通过将构造函数标记为显式来禁用。非显式单参数构造函数可以称为转换构造函数。这是因为它们允许编译器从另一种类型(参数类型)隐式转换为对象 这种隐式转换并不总是需要的,可以通过将构造函数标记为显式来禁用。显式构造函数是一个不会被调用的函数 例如: class A { A( int a ) {} }; void foo( A a ) {} 调用fo

提前感谢。

非显式单参数构造函数可以称为转换构造函数。这是因为它们允许编译器从另一种类型(参数类型)隐式转换为对象


这种隐式转换并不总是需要的,可以通过将构造函数标记为显式来禁用。非显式单参数构造函数可以称为转换构造函数。这是因为它们允许编译器从另一种类型(参数类型)隐式转换为对象


这种隐式转换并不总是需要的,可以通过将构造函数标记为显式来禁用。显式构造函数是一个不会被调用的函数

例如:

class A {
   A( int a ) {}
};

void foo( A a ) {}

调用
foo(1)
或使用int类型的变量或可以隐式转换为int的变量是完全合法的。这并不总是可取的,因为这意味着
A
可以从整数转换而来,而不是用整数定义。添加显式将避免转换,因此会导致编译错误。

显式构造函数是一个不会被调用的函数

例如:

class A {
   A( int a ) {}
};

void foo( A a ) {}

调用
foo(1)
或使用int类型的变量或可以隐式转换为int的变量是完全合法的。这并不总是可取的,因为这意味着
A
可以从整数转换而来,而不是用整数定义。添加
显式
将避免转换,因此会给您带来编译错误。

一个
显式
构造函数会阻止该构造函数用于隐式类型转换。您到底想问什么?特别是在阅读了一些文档之后,比如“实际移动”和“复制”构造函数通常被认为是隐式的。@JesperJuhl,你能提供一个例子吗?我看不到一个好的
显式
复制构造函数(包括移动构造函数)的用例。通常,它转换构造函数(即接受不同类型参数的构造函数),其中隐式/显式区别很重要。
显式
构造函数阻止该构造函数用于隐式类型转换。您到底在问什么?特别是在阅读了一些文档之后,比如“实际移动”和“复制”构造函数通常被认为是隐式的。@JesperJuhl,你能提供一个例子吗?我看不到一个好的
显式
复制构造函数(包括移动构造函数)的用例。通常,在隐式/显式区别很重要的情况下,它会转换构造函数(即接受不同类型参数的构造函数)。回想起来,隐式对话最好使用“implicit”关键字显式请求。回想起来,隐式对话最好使用“implicit”关键字显式请求关键词。