派生 class 中的重写赋值运算符

Overriding assignment operator in derived class

假设 class D 派生自基数 class B,其中 D 没有任何数据成员
我想出了以下方法来重载赋值运算符 = for class D

#include<iostream>
#include<string>
using namespace std;
class B {
    private:
      std::string* str = nullptr;

public:
  const B& operator=(const B& rhs) { 
   return *this;
  }
 
};

class D : public B {
public:
D& operator=(const D& empl) {
               if ( this != &empl ) {
                   (B&)(*this) = empl;
                  
               }
               return *this;
          }
};

int main()
{

    return 0;
}

因为里面没有数据成员。我可以简单地使用 Base class 赋值运算符。
这是一个正确的实现吗?

我认为更好的实现方式是:

if (this != &empl)
    B::operator= (empl);

这避免了转换,充其量是可疑的。

但是,正如@Some 程序员所说,D::operator= 的目的到底是什么?它不会做任何 B::operator= 不会做的事情,所以你不需要它。