c++ - 使用派生的右值引用初始化基
问题描述
在以下代码中:
struct A {
A() {}
A(A &&) { printf("moving A\n"); }
~A() { printf("destructing A\n"); }
};
struct B : A {
B() {}
B(B &&) { printf("moving B\n"); }
~B() { printf("destructing B\n"); }
};
B func() {
B b;
return b;
}
int main() {
A a = func();
printf("hello\n");
}
产生以下输出:
moving A
destructing B
destructing A
hello
destructing A
为什么没有删除移动?为什么调用 A 的移动构造函数而不调用 B 的移动构造函数?这里到底发生了什么?
解决方案
推荐阅读
- git - 如何撤消新初始化存储库中的提交(未推送)
- machine-learning - 我们是否需要关心训练中的目标变量分布和回归问题中的验证集?
- php - file_get_contents() 不能使用 HTTPS
- java - onCreateView 中的Android Fragment getActivity().getApplicationContext() 为空
- python - 如何提高while循环的运行时间
- python - 更快的算法来定制给定的数学表达式
- java - 如何在Java中读回一个字节?
- c++ - 重载链表中的赋值运算符
- python - 在 Python 中使用 else 函数时出现错误
- c++ - 如何使用 C++ 从 data.txt 文件中获取平均值?