[英]c++, protected abstract virtual base pure virtual private destructor
所以,今天我发现这句话,有人能解释一下吗?
“如果您认为C ++并不过分复杂,那么什么是受保护的抽象虚拟基础纯虚拟私有析构函数,以及您最后一次需要它的时间? - Tom Cargill”
我相信它是一个私有的纯虚拟析构函数 (我认为这部分是不言自明的),它是抽象基类的一部分 ,你通过受保护的虚拟继承使用它。 。
class Base
{
private:
virtual ~Base() = 0; /* A */
};
class Derived : protected virtual Base
{
private:
~Derived () {.......} /* B */
};
从标记B的角度来看,标记A处的行是“受保护的抽象虚拟基础纯虚拟私有析构函数”,
这三个部分中的每一个都有其各自的用途。 我不知道需要上述三个部分的设计模式,但没有什么能阻止它们一起使用。
不确定原始上下文,但我的猜测是有人声称C ++不像Java那样复杂。 Tom的观点是C ++具有足够的功能,您可以轻松地创建非常复杂的构造。
这些话似乎有道理但不是真的。
同时将两个不同的东西串在一起以试图使事情复杂化是一个迹象,表明作者只是试图混淆人们试图找出一个并非真正存在的观点。
我们应该注意到每种情况都是唯一的,您可以根据情况的需要构建类层次结构和析构函数。 调用语言过于复杂,因为它提供的设施很愚蠢。 它就像说私人继承的意义。 是的,通常你不打算使用它,但是有一个很好的机会。
我也没想到:
受保护的抽象虚拟基础纯虚拟私有析构函数,以及您最后一次需要的时间
我认为:
基本上,他只是将一堆单词拼凑在一起并将它们粘在一起而没有意识到它们实际上是指不同的东西,或者经常是同一件事。
protected abstract virtual base
很简单。
class Base { // BASE
virtual something() = 0; // ABSTRACT
};
class Derived : protected virtual Base { // PROTECTED VIRTUAL
};
纯虚拟私有析构函数
也很简单。
class Base { // BASE
private:
virtual ~Base() = 0; // pure virtual, private, destructor
};
class Derived : Base {
};
当然,纯虚拟与抽象相同。
这是非常完整和完全夸张的人写的,他不知道他在说什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.