当前位置:编程学习 > C/C++ >>

设计一个类,该类不能被继承,且只能实例化3次

[cpp]
#include<iostream>  
 
class finalclass 

public: static int count; 
public: 
    static finalclass *getinstance() 
    { 
        if(count <= 0) 
            return NULL; 
        count--; 
        return new finalclass; 
    } 
    static void setcount(int n) 
    { 
        count = n; 
    } 
/*  static void deleteinstance(finalclass *pinstance)
    {
        delete pinstance;
        pinstance = 0;
    }
*/ 
private: 
    finalclass(){} 
    ~finalclass(){} 
}; 
int finalclass::count = 0; 
int main() 

    finalclass::setcount(3); 
    finalclass *f1 = finalclass::getinstance(); 
    finalclass *f2 = finalclass::getinstance(); 
    finalclass *f3 = finalclass::getinstance(); 
    if(f3 == NULL) 
        printf("f3 NULL\n"); 
    else 
        printf("f3 NOT NULL\n"); 
    finalclass *f4 = finalclass::getinstance(); 
    if(f4 == NULL) 
        printf("f4 NULL\n"); 
    finalclass *f5 = finalclass::getinstance(); 
    if(f5 == NULL) 
        printf("f5 NULL\n"); 

#include<iostream>

class finalclass
{
public: static int count;
public:
 static finalclass *getinstance()
 {
  if(count <= 0)
   return NULL;
  count--;
  return new finalclass;
 }
 static void setcount(int n)
 {
  count = n;
 }
/* static void deleteinstance(finalclass *pinstance)
 {
  delete pinstance;
  pinstance = 0;
 }
*/
private:
 finalclass(){}
 ~finalclass(){}
};
int finalclass::count = 0;
int main()
{
 finalclass::setcount(3);
 finalclass *f1 = finalclass::getinstance();
 finalclass *f2 = finalclass::getinstance();
 finalclass *f3 = finalclass::getinstance();
 if(f3 == NULL)
  printf("f3 NULL\n");
 else
  printf("f3 NOT NULL\n");
 finalclass *f4 = finalclass::getinstance();
 if(f4 == NULL)
  printf("f4 NULL\n");
 finalclass *f5 = finalclass::getinstance();
 if(f5 == NULL)
  printf("f5 NULL\n");
}

 \

 

 


 

补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,