継承できないクラスをC++で実現
4773 ワード
:
, , 。 , , , !
:
: C++
? ? ? , , 。
, , , 。
, , ? 。
。 , , , 。
Ok? ? , 。
OK。 。 :
#include<iostream>
using namespace std;
class A
{
public:
static A * Construct(int n)
{
A *pa = new A;
pa->num = n;
cout<<"num is:"<<pa->num<<endl;
return pa;
}
static void Destruct(A * pIntance)
{
delete pIntance;
pIntance = NULL;
}
private:
A(){}
~A(){}
public:
int num;
};
void main()
{
A *f = A::Construct(9);
cout<<f->num<<endl;
A::Destruct(f);
}
, 。 , 。
, , , ? , , 。
? 。 ? ? , !
。 , , 。
。
! , “ ”, :
#include<iostream>
using namespace std;
template <typename T>
class Base
{
friend T;
private:
Base() {}
~Base() {}
};
class Finalclass : virtual public Base<Finalclass>
{
public:
Finalclass() {}
~Finalclass() {}
};
void main()
{
Finalclass *p = new Finalclass; //
Finalclass fs; //
}
OK。 Finalclass 。
Base,Base , Base , , , 。 。
, , 。
? , 。
, :
, , Base , Base 。 error!!!
。
:http://www.cnblogs.com/Braveliu/archive/2013/01/03/2842739.html