c++ - 在派生类中使用复制赋值
问题描述
cppreference说:
因为总是为任何类声明复制赋值运算符,所以基类赋值运算符总是隐藏的。如果使用 using-declaration 从基类引入赋值运算符,并且其参数类型可以与派生类的隐式赋值运算符的参数类型相同,则 using-declaration 也被隐式隐藏宣言。
据我了解,以下代码不应编译。因为
- B::operator=(const B&) 是隐式声明的。
- A::operator=(const A&) 和 using-declaration 都是隐藏的。
#include <iostream>
using namespace std;
class A {
public:
A& operator=(const A& A) {
cout << "A::opreator=" << endl;
}
};
class B : A {
public:
using A::operator=;
};
int main() {
A a1;
B b1;
b1 = a1;
}
但是,它编译成功并打印“A::operator=”,为什么?
解决方案
您无法隐藏复制赋值运算符 of,B
因为您提到的两个运算符都采用不同的参数。
推荐阅读
- mysql - 如何检查每一行(时间戳 - 60 秒)以确定 MySQL 中是否存在重复数据?
- node.js - 未找到 POST 路由
- deep-learning - 针对特征的机器学习层
- box - 无需用户授权,使用 API 进行 Box 身份验证
- c# - Razor Pages - 由于多个对象共享参数,模型验证失败
- php - 如何从 laravel 模型中的 html 获取纯文本?
- php - 如果其中有某个单词,则取消设置数组项 Php
- yolo - 我应该更改 yolo-obj.cfg 中锚点的值吗?
- machine-learning - Precision、Recall 和 F1 可以是相同的值吗?
- javascript - Youtube API iframe 不适用于生产