- 主题:问个奇怪的对象初始化问题 : A a = b; // B b;
想问一下怎么在 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.*
你这么说,我倒是发现 VS2019里确实是三个选项:14、17、latest。
【 在 ble (ble) 的大作中提到: 】
: 我是在Clion调用各个工具链,C++标准是在CMake里面设置的. VS 2019里面latest就是20吧。
--
FROM 27.115.42.*
如果“operator+类名”作为操作符实现它类构造函数的重载的话,
那么我赞同你的说法,对象的隐式类型转化只能作一次。
【 在 allegro (静水流深) 的大作中提到: 】
: 我看的说法是隐式转换只发生一次,无法一次转换到目标类型就失败?
--
FROM 27.115.42.*
哦,我看了一下 cppreference 网站,发现正如你所说,
operator 除了操作符重载,还有类型(转换)重载,
不知道这种类型重载适不适用于 C++ 风格(static_cast<C>……)?
【 在 ble (ble) 的大作中提到: 】
: 重载的是这个(X)
: double d = 1.25;
: int i = (int)d;
: ...................
--
FROM 115.239.231.*