?????????????java?????????java??????????????У?????final?????????к?????????????????????п???????в?Ρ?????????????????????????????е?????????????????????μ?в?ν???????e?????????????????е????к??????

??????????·?????????????????????????????а??????????????????????????????С????????????????????????????????е??????????????????????????????????????????????????????й?????????????a???????????????????????

????????????????????????????????C++??????????????????????????д?????3?????????а?????????????е???Щ???????

?????????????????????????е??????

?????????????????????CXX?????????????ε????????????????CXX??????Final????CParent???????CParent?????????С????????????????????????е??????????CParent??????????????????CParent???????????CParent??????CChild?????????????????????????????????????????????CFinalClassMixin??

??????????????????????????????

?????κ????????ж???????????

??????????????????????????????????

?????????????????????????????????????????????????????private????????????????????潫?????CParent?????????????????£?

class CFinalClassMixin
????{
????friend class CParent;
????private:
????CFinalClassMixin(){}
????~CFinalClassMixin(){}
????};
????//?????CParent???????????:
????class CParent:publicCXXX
????{
????public:
????CParent(){}
????~CParent(){}
????};

?????????CXXX?????????????????????????????У???????????????????????У??????????????

??class CParent:public CFinalClassMixin?? public CXXX
????{
????public:
????CParent(){}
????~>CParent(){}
????};

??????????????CParent??????????????

????class CChild??public CParent{}??

??????????′??????????????????????????

???????????????????????????????????????????????????????????????Mixin????????????????????????

????????????????????????????CFinalClassMixin?????????????????????????????????????У?????CChild???????CFinalClassMixin???????????????ò???????????

????CChild??????????CFinalClassMixin????????????????????????????????????????????????CChild?????CParent??????CFinalClassMixin?????????????????????????????

???????????????????????????????CChild???????CFinalClassMixin??????????????????????????

??????????????????е??????????????????????????????????????CParent??CFinalClassMixin??и???CFinalClassMixin???п?????????????£?

class CParent:virtual public CFinalClassMixin?? public CXXX
????{
????public:
????CParent(){}
????CParent(){}
????};

??????????????????

?????????????Щ?????????????£???????????????б???????????????????????CFinalClassMixin????????pure?? ????????????г???????????????????????????д?????????????μ?в???????????????????????

??????????и?????????????????????????CFinalClassMixin?????????????????????????????????鷳???? ????????????????????????????????????????????C++??

???????????????????????????壡????????????????????????????????

????????????ò??????????????????е?CFinalClassmixin????????壩

// finaltest.cpp : Defines the entry point for the console application.
????//
????#include "stdafx.h"
????#include <iostream>
????using namespace std;
????template<class T>
????class CFinalClassMixin
????{
????friend T;
????private:
????CFinalClassMixin(){}
????~CFinalClassMixin(){}
????};
????class CXXX
????{
????public:
????CXXX(){cout << "I am CXXX" << endl;}
????~CXXX(){}
????};
????class CParent:virtual public CFinalClassMixin<CParent>?? public CXXX
????{
????public:
????CParent(){}
????~CParent(){}
????};
????class CChild:public CParent{};
????int main(int argc?? char* argv[])
????{
????CParent a; // ???????
????//CChild b; //???????
????return 0;
????}

?????????????????е?????????CFinalClassMixin????????????????

??????????????????????????????е??????????????Щ????????????????????????????Щ?????????????????????????а?????????????????£???????????????????????????????????????????????

????????????Mixin??????????????СС????????к?????????????????UnCopiale???????????????????????????????б????С????????????ò??????????????е??????????????????????Ρ?????????????????????????????????????????