gpt4 book ai didi

c++ - 从基本类型到用户定义类型的转换

转载 作者:行者123 更新时间:2023-11-30 02:18:13 25 4
gpt4 key购买 nike

如果我们有一个名为 Distance 的用户定义类型(类),dist1dist2 作为该类型的对象,那么我们可以执行:

dist1=dist2;

因为编译器提供了一个内置的赋值运算符。

但是,与此同时,我们也可以这样做:

dist1= 1.0;

编译器如何将 float 转换为 Distance,因为我认为只有一个隐式赋值拷贝与参数具有相同的类。

Distance 具有以下构造函数:

Distance()
Distance(float c)

最佳答案

您看到的是使用 Converting Constructor对于距离类型。

基本上,如果您为类型 T 声明一个构造函数,该类型:

  • 接受一个 S 类型的参数(或对 S 的引用)
  • 未声明显式

然后允许编译器通过调用该构造函数自动将 S 转换为 T。所以,如果你有一个接受 T 的函数:

void do_the_thing(T const& t);

那么这两个调用将是等价的(假设不存在以 S 作为参数的 do_the_thing 重载):

T t;
S s;

do_the_thing(t);
do_the_thing(T(s));

因此您的第二行或多或少等同于以下内容:

{
Distance temp(1.0);
dist1 = temp;
// temp goes out of scope and is destroyed
}

关于c++ - 从基本类型到用户定义类型的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52502792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com