c – 在派生类中强制使用受保护的构造函数

前端之家收集整理的这篇文章主要介绍了c – 在派生类中强制使用受保护的构造函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否有任何机制允许在派生类中强制执行受保护的构造函数

简单的例子:

template<typename T>
class Factory;

class Base {
  template<typename T>
  friend class Factory;
protected:
  Base();
};


class Child : public Base {
public:
  Child(); // this should lead to a compile time error
};

<template T>
class Factory {
Base* GetNew()
{
  BOOST_STATIC_ASSERT(boost::is_base_of<Base,T>::value);

  Base* b = new T();
  b->doStuff();

  return b;
 }
};

所以我希望Child类只能由工厂创建,并强制所有从Base派生的子类都有一个受保护的构造函数.

解决方法

不,没有办法强制执行此操作.通常,基类在限制子类的方式上非常有限. Base不是,也不应该试图负责监管每个可能写过碰巧从Base继承的类的人.
原文链接:https://www.f2er.com/c/110770.html

猜你在找的C&C++相关文章