显式关键字是什么意思?

草图

explicit关键字在C ++中是什么意思?

草图

允许编译器进行一次隐式转换,以将参数解析为函数。这意味着编译器可以使用可通过单个参数调用的构造函数从一种类型转换为另一种类型,以便获得参数的正确类型。

这是带有可用于隐式转换的构造函数的示例类:

class Foo
{
public:
  // single parameter constructor, can be used as an implicit conversion
  Foo (int foo) : m_foo (foo) 
  {
  }

  int GetFoo () { return m_foo; }

private:
  int m_foo;
};

这是一个带Foo对象的简单函数

void DoBar (Foo foo)
{
  int i = foo.GetFoo ();
}

这是该DoBar函数的调用位置:

int main ()
{
  DoBar (42);
}

参数不是Foo对象,而是int但是,存在一个Foo需要一个的构造函数,int因此可以使用该构造函数将参数转换为正确的类型。

允许编译器对每个参数执行一次此操作。

explicit给构造函数加上关键字前缀可以防止编译器使用该构造函数进行隐式转换。将其添加到上述类中会在函数调用时产生编译器错误DoBar (42)现在有必要使用DoBar (Foo (42))

您可能要执行此操作的原因是为了避免可能隐藏错误的意外构造。
人为的例子:

  • 您有一个MyString(int size)带有构造函数类,该构造函数构造给定大小的字符串。您有一个函数print(const MyString&),并且您可以进行调用print(3)实际打算调用时print("3"))。您希望它打印“ 3”,但是它将打印一个长度为3的空字符串。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

关键字对象在Kotlin中是什么意思?

关键字strictfp是什么意思?

new 关键字在界面中是什么意思

'fileprivate'关键字在Swift中是什么意思?

关键字“ transient”在Java中是什么意思?

jsr关键字是什么意思?

Swift中的“ required”关键字是什么意思?

“ __block”关键字是什么意思?

ALSO关键字在MLISP中是什么意思?

Laravel路由中的“ as”关键字是什么意思?

“ self”关键字在WebWorkers中是什么意思

“和”关键字在OCaml中是什么意思?

界面中的关键字“ new”是什么意思?

“ Base”关键字在Julia中是什么意思?

Future,async,await 关键字是什么意思?

在关键字“ forEach”中,“ return”关键字是什么意思?

这是什么新的关键字“产量”在Java中13是什么意思?

在Raku类定义中,“具有”关键字在“方法”之前是什么意思?

点(在两个关键字之间)在 ARM 汇编中是什么意思?

类标题中的关键字“ constructor”是什么意思?

D中的“ in”和“ out”关键字是什么意思?

header / impl关键字在kotlin中是什么意思?

芹菜中bind = True关键字是什么意思?

“ this”关键字在初始化程序块中是什么意思?

关键字“ const”不会使值不变。这是什么意思?

在交换机中使用时,关键字类型是什么意思?

LLVM tablegen中的field关键字是什么意思?

Ruby的AST中的'send'关键字是什么意思?

VB6关键字Set是什么意思?