在C++中,减少派生类中返回类型的cv限定符是有效的:
class Base {
virtual const Base* f();
};
class Derived : public Base {
Base* f() override;
};
Run Code Online (Sandbox Code Playgroud)
这对指向原始类型的指针有效吗?
class Base {
virtual const int* f();
};
class Derived : public Base {
int* f() override;
};
Run Code Online (Sandbox Code Playgroud) 是否合法地构造和构造基类对象以重置基类已知的状态部分?
class C : public BaseClass {...};
C c;
c.BaseClass::~BaseClass();
new (static_cast<BaseClass*>(&c)) BaseClass;
Run Code Online (Sandbox Code Playgroud)
显然,如果我们可以访问类的源代码,还有其他方法可以实现这种效果.但是,我想从语言角度了解是否存在无效的具体原因.