Это имеет смысл только в том случае, если вы не хотите, чтобы клиенты создавали экземпляры Base
, скорее вы намереваетесь, чтобы это был базовый класс некоторых [производных] классов, и / или намеревались использовать его друзья Base
(см. Пример ниже).Помните, что protected
функции (и конструкторы) могут быть вызваны только из производных классов и friend
классов.
class Sample;
class Base
{
friend class Sample;
protected:
Base() {}
};
class Sample
{
public:
Sample()
{
//invoking protected constructor
Base *p = new Base();
}
};