问题标签 [explicit-constructor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如果复制列表初始化允许显式构造函数会出现什么问题?
在 C++ 标准 §13.3.1.7 [over.match.list] 中,声明如下:
在复制列表初始化中,如果
explicit
选择了构造函数,则初始化格式错误。
这就是为什么我们不能这样做的原因,例如,这样的事情:
(请注意,这里发生的不是转换,即使构造函数是“隐式的”也不会是转换。这是foo
直接使用其构造函数初始化对象。除了 之外std::string
,这里没有转换。)
这对我来说似乎很好。隐式转换绝不会咬我。
如果{ "answer", 42 }
可以初始化其他东西,编译器就不会背叛我做错事:
没有问题:调用不明确,代码无法编译,我必须明确选择重载。
由于明确规定了禁令,我觉得我在这里遗漏了一些东西。据我所知,列表初始化选择显式构造函数对我来说似乎不是问题:通过使用列表初始化语法,程序员已经表达了进行某种“转换”的愿望。
会出什么问题?我错过了什么?
c++ - 使用“X x(42)”和“X x = 42”构建对象的区别?
假设我们有定义了构造函数的类X(int value)
X。
这在语义上是否等效?
我相信只有在 X 的构造函数中添加显式关键字时才会出现差异。否则编译器会将表达式简化X x = 42;
为X x(42);
如果我错了,请纠正我。
c++ - “多个运算符 + 匹配这些操作数”错误
我正在为学校作业创建一个 Money 课程。我已经定义了从 Money 到 double 的转换,我有一个 Money 的构造函数,它接受一个 int,另一个构造函数接受一个 double,并且我重载了“+”运算符以将两个 Money 类型的对象相加。当我尝试执行类似myMoney + 10
myMoney 是 Money 类型的对象,而 10 显然是一个整数之类的操作时,会出现错误消息。以下是其余相关代码:
如果我尝试Money(double(myMoney)+10)
并且如果我明确两个构造函数,该程序实际上可以工作,但我不确定我是否理解自动转换发生了什么。谁能解释这种行为?
c++ - 如何使用链表设置显式值构造函数?
对于一个项目,我试图设置一个链表对象,以便可以使用显式值构造函数对其进行初始化。我希望它看起来像这样:
但是当我打印出你的对象时,我看到的只是这个符号“=”,当我打印出你的长度时,我得到 -858993459
这是我的显式值构造函数,有人可以告诉我我做错了什么吗?
如果有帮助,这是类声明文件
c++ - 继承和显式构造函数?
考虑以下代码:
有没有办法重新设计这段代码,Derived
使所有的构造函数都Base
具有相同的显式/隐式属性?
c++ - 隐式构造函数可用于从 Base 派生的所有类型(当前类型除外)?
以下代码总结了我的问题:
考虑到我已经有示例代码中的显式构造函数,如何将隐式构造函数限制为从父类派生的所有类(当前类除外),无论其模板参数如何?
编辑:对于来自 Base 的隐式构造函数,我显然可以写:
但是在那种情况下,我是否可以保证编译器不会将此构造函数用作隐式构造函数Derived2<OtherParameter1, OtherParameter2, OtherParameter>
?
EDIT2:在这里我有一个测试:(LWS在这里: http: //liveworkspace.org/code/cd423fb44fb4c97bc3b843732d837abc)
最后一行让我担心。C++标准可以吗?它是 g++ 的错误吗?
c++ - C++ 总是使用显式构造函数
阅读以下博客后:
http://xania.org/200711/ambiguous-overloading
我开始问自己“我不应该总是明确定义我的构造函数吗?”
所以我开始阅读比发现这篇文章更多的内容:
http://www.sjbrown.co.uk/2004/05/01/always-use-explicit/
这显示了另一个例子,也解释了他背后的想法。但当然,这是一位博主的想法。
我很高兴听到你们中的一些人的意见,你对这种方式的看法,你对这个主题的经验以及任何一种方式的一些例子都会很好。
c++ - 在 N 元构造函数上显式?
在本演示文稿中:http: //qtconference.kdab.com/sites/default/files/slides/mutz-dd-speed-up-your-qt-5-programs-using-c++11.pdf
作者建议 N 元构造函数受益于 C++11 版本的explicit
关键字。
如果您有多个构造函数参数,C++11 中的哪些变化使这个关键字变得有用?
c++ - 显式构造函数和重载
嗨,大家好 :)
我的问题:在这种特定情况下,显式构造函数和两个运算符重载的目的是什么,以及它们在用法示例中是如何使用的?
提前致谢。
c++ - 标记为“显式”的 C++11 initializer_list 构造函数
我可以将显式与 init-list ctor 一起使用来确保像 {a} 这样的表达式不会导致意外的隐式转换吗?还有一个想法:我应该担心吗?与简单的相比,编写{a}
错误的可能性更小a
,但另一方面,从代码中可能仍不清楚我们正在通过隐式转换构造对象。