- 主题:问个奇怪的对象初始化问题 : A a = b; // B b;
不知跟const有没有关系
【 在 xieyf () 的大作中提到: 】
: // 代码来了, 下面的代码 vs2015能过, 走转换-构造通道, 但是g++就不给过, 提示
:
: 那么问题来了, 我如果想办法让gcc过了, 那vs和gcc的编译后软件行为居然不一样?
:
--
FROM 138.19.103.*
间接的不算吧
极端情况:假定有100个转换路径,你让编译器选哪个?
【 在 xieyf 的大作中提到: 】
: 假设 B b;
: A和B不同类型, 那么
: cpp标准说 A a = b; 是一定走构造函数的吧, 如果a和b是不同类型, 会首先调用
: ...................
--
FROM 221.218.211.*
想问一下怎么在 Visual Studio 中启用C++20?
我在 Visual Studio Community 2019 的项目属性中只看到了14/17,
而且这段代码编译失败。
【 在 ble (ble) 的大作中提到: 】
: 如下代码,在C++20情况下,所有编译器都报错
: #include <iostream>
: struct C { C() { std::cout << "Constructs C" << std::endl; } };
: ...................
--
FROM 27.115.42.*
小白一问,“operator+类名”这是重载了哪个操作符,类中重载它类构造函数?
像这样:
B b;
C c=b.(operator C); // 通常等价于 C c = C(b);
感觉很疯狂的写法?
【 在 xieyf ( meitian ) 的大作中提到: 】
: class C;
: class B{
: // operator overloading
: operator C() const;
: }
--
修改:easior FROM 27.115.42.*
FROM 27.115.42.*
我是在Clion调用各个工具链,C++标准是在CMake里面设置的. VS 2019里面latest就是20吧。
【 在 easior 的大作中提到: 】
: 想问一下怎么在 Visual Studio 中启用C++20?
: 我在 Visual Studio Community 2019 的项目属性中只看到了14/17,
: 而且这段代码编译失败。
--
FROM 222.129.54.*
你这么说,我倒是发现 VS2019里确实是三个选项:14、17、latest。
【 在 ble (ble) 的大作中提到: 】
: 我是在Clion调用各个工具链,C++标准是在CMake里面设置的. VS 2019里面latest就是20吧。
--
FROM 27.115.42.*
如果“operator+类名”作为操作符实现它类构造函数的重载的话,
那么我赞同你的说法,对象的隐式类型转化只能作一次。
【 在 allegro (静水流深) 的大作中提到: 】
: 我看的说法是隐式转换只发生一次,无法一次转换到目标类型就失败?
--
FROM 27.115.42.*
【 在 easior 的大作中提到: 】
: 你这么说,我倒是发现 VS2019里确实是三个选项:14、17、latest。
:
因为20的支持还没做完,所以用latest,等全部写完就改成20了
这是changelog
https://github.com/microsoft/STL/wiki/Changelog
--
FROM 211.249.40.*
重载的是这个(X)
double d = 1.25;
int i = (int)d;
类似的
B b;
auto c = (C)b;
【 在 easior 的大作中提到: 】
: 小白一问,“operator+类名”这是重载了哪个操作符,类中重载它类构造函数?
: 像这样:
: B b;
: ...................
--
FROM 222.129.50.*
哦,我看了一下 cppreference 网站,发现正如你所说,
operator 除了操作符重载,还有类型(转换)重载,
不知道这种类型重载适不适用于 C++ 风格(static_cast<C>……)?
【 在 ble (ble) 的大作中提到: 】
: 重载的是这个(X)
: double d = 1.25;
: int i = (int)d;
: ...................
--
FROM 115.239.231.*