知识大全 privte的析构函数和构造函数

Posted 函数

篇首语:将相本无种,男儿当自强。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 privte的析构函数和构造函数相关的知识,希望对你有一定的参考价值。

  C++中是不允许virtual 构造函数的 如果在构造函数前加virtual

  以vc 为例 编译器报错为 inline is the only legal storage class for constructors

  虽然不明白这个跟inline有什么关系 但是错误是肯定的

  构造函数和析构函数都可以是private的 这种情况下编译通过 但是该类无法被实例化 即使继承也不行

  例如

  class A

  

  private:

  A();

  virtual ~A();

  ;

  class B : public A

  

  public:

  B();

  virtual ~B();

  ;

  B b;

  以上代码是编译不通过的 因为B() ~B()分别需要调用A() ~A() 而它们都是private的 所以无法调用

  解决方法只有friend 包括friend class和 friend function 例如可以将A的定义修改如下 就可以实现

  class A

  

  private:

  A();

  virtual ~A();

  friend class B;

  ;

cha138/Article/program/c/201311/11107

相关参考