- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在下面的代码中:
class Base
{
public:
Base(const SomeClass& c) : m_c(c) {}
SomeClass m_c;
};
class Derived : Base
{
public:
Derived(const SomeClass& c) : Base(c) {}
Derived(SomeClass&& c) : Base(static_cast<Base&&>(c)) {} // Unnecessary?
}
上面的移动构造函数是不是不必要的?我想不出它会比左值引用有任何优势的场景?
最佳答案
好吧,那个代码很奇怪。坏了。
static_cast<Base&&>(c)
创建临时 Base
目的。然后它在省略被阻止的上下文中将该临时基础对象传递给 Base
。作为 Derived
基础的对象.
这会导致传递 SomeClass&& c
首先被复制,然后移动到Base
的 Derived
.如果SomeClass
缺少移动构造函数,在这种情况下会导致 2 个拷贝。
我想不出您想这样做的理由。但是,在某些代码库中,我上面列出的副作用可能会产生明显的后果。
从 SomeClass
移动构造的更传统方法是Derived( SomeClass&& c ):Base(std::move(c)) {}
并添加 Base( SomeClass&& c ):m_c(std::move(c)) {}
至 Base
.那移动SomeClass
顺利进入基地的m_c
而不是上面的体操。
关于c++ - 这个移动构造函数是不必要的吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29017544/
jQuery attributeContainsPrefix [name^="value"] 对比 attributeStartsWith [name|="value"] 实际区别是什么? 最佳答案
在1.1部分在RFC 6749中,有四种角色:资源拥有者、资源服务器、客户端和授权服务器。 如果客户端和资源所有者是同一实体,OAuth 是否变得多余或不必要? 例如,我有一个封闭的 API 和一个面
我有一段代码,其中有一个带有保护子句的 raise 语句: def validate_index index # Change to SizeError raise ArgumentError
我看到了这篇文章( JPA Entity Lifecycle Events vs database trigger ),但它并没有像我在这里那样明确地询问: 当我插入 PK 值为 (null) 的行时
所以,我有一段代码看起来像 if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2){ // Do something }
我是一名优秀的程序员,十分优秀!