你什么时候会使用:
私有constructor/destructor?
类名:受保护的主
类名:私有Main
如果它太宽泛了,你可以用一个简单的例子来说明你可能在哪里使用它,因为我只是在寻找一个开始的想法。
发布于 2011-09-10 12:30:05
一个私有构造函数/析构函数
http://www.parashift.com/c++-faq-lite/private-inheritance.html
发布于 2011-09-10 12:36:09
斯科特·迈尔斯这样解释:
class D : public B:"D提供接口"D是使用B".受保护的构造函数/析构函数对于您希望仅以第二种方式使用的类非常有用,这是为了为其他类提供实现。在这种情况下,只有派生类需要调用构造函数和析构函数,这样就可以保护构造函数和析构函数。
私有构造函数意味着只有类本身才能创建自己的实例,这在工厂或创建者模式中很流行,静态成员函数返回指向实例的指针,但不希望直接构造类实例。
发布于 2011-09-10 12:39:00
私有构造函数/析构函数?
私有构造函数/析构函数对于任何类型的类来说都是有意义的,这些类的对象实例应该由其他一些管理器类来管理(例如,它拥有它管理的类的所有实例的列表)。举个例子:
class AManager;
class A {
private:
friend class AManager;
A() {};
~A() {};
}
class AManager {
public:
A* createA() { a = new A(); aList.add(a); return a; }
void destroy(A* a) { aList.remove(a); delete a; }
private:
list<A> aList;
}受保护的构造函数/析构函数?
如果您只希望创建类的子类(例如,如果您的类只是一个抽象类,但没有纯虚拟方法,那么理论上它可以通过公共构造函数实例化):
class A {
protected:
A() {};
~A() {};
}
class A1: public A {
public:
A1() {}
}
class A2: public A {
public:
A2() {}
}作为工厂模式的一部分,这是最有意义的:
class AFactory {
public:
A* createA() {
if(someCondition()) return new A1();
else return new A2();
}
void destroyA(A* a) { delete a; }
private:
bool someCondition() { /*...*/ }
}create/destroy方法也可以是A基类的静态方法,但是由于需要前向声明,它变得更加复杂。另外,作为一种选择,A1和A2构造函数可以保持保护,AFactory是A1和A2的朋友。
A受保护的继承的主类?私人继承的主要阶级?
你所说的Main类是什么意思?无论如何,非公共继承非常类似于聚合,因此如果没有非常具体的原因不这样做,聚合应该比私有/受保护的继承更好。
https://stackoverflow.com/questions/7371661
复制相似问题