C++只能允许类创建一个对象的做法

方法一:

利用引用计数:
#include <iostream>
using namespace  std;

class  Object
{

public:

    ~Object()
    {
        count=1;

    }
     Object()
     {
         if (count==0)
         {
             cout<<"该类只能创建一个对象!";
             return ;
         }
         --count;

     }

private:
    static int count;

};
int Object::count=1;

int main()
{
    Object b;

    return 0;

}
方法二:利用友元函数
#include <iostream>
using namespace  std;

class  Object
{

public:
    ~Object(){}

private:
    Object(){}
    Object(const Object&){}
    Object& operator =(const Object &){}
    friend Object& CreateObject()
    {
        static Object a;
        return a;

    }

};

int main()
{  

    return 0;

}转载自:http://blog.csdn.net/acdnjjjdjkdckjj/article/details/5621165
时间: 2024-08-25 23:54:41

C++只能允许类创建一个对象的做法的相关文章

怎么编写可以把一个类中只能创建一个对象

static关键字可以限定一份: class Person{ String name; private Person(){};//私有化构造函数,禁止外部创建对个本类的对象 static Person p=new Person();//在本类中创建一个对象,因为下面一个普通方法在应用程序中直接类名.方法名:那么 //直接在上面添加static关键字,使之变成静态方法. public static Person getInstance(){  return p;//返回到上面的对象.具体就是把内存

如何限制类仅能创建一个对象

方法一: 利用引用计数: #include <iostream>   using namespace  std;      class  Object   {      public:             ~Object()       {           count=1;          }        Object()        {            if (count==0)            {                cout<<"

李洪强iOS开发之创建一个对象并访问实例变量

// //  main.m //  07 - 创建一个对象并且访问实例变量 // //  Created by vic fan on 16/7/3. //  Copyright © 2016年 李洪强. All rights reserved. // // Car *car = [Car new]; 类名 *指针 = [类名 new]; [Car new];做了三件事: 1 向计算机申请内存空间 2 初始化类中的实例变量 3 返回对象的内存地址 #import <Foundation/Found

OrmLite动态创建表,一个实体类创建多张表的的偏招

在做一个Android的项目,因为使用数据库频繁,实体字段也比较多,于是打算采用ORM框架,发现OrmLite还不错,于是下了下来,打算使用. 没想到还没正式开工,就遇到问题了.我现在的一个需求如下, 我有一个实体类如下,代表聊天消息,现在要做的是针对每一个当前用户(userId)对应一个朋友(friendId)都要创建一个表.需求比较蛋疼,我本来想的是直接在加两个字段就搞定的,但是我们老大说要分表.没办法只能分表. public class ChatMessage{ public ChatMe

[Swift] 创建一个对象

创建一个对象 先写一个People类 // // People.swift // Class // // Created by YouXianMing on 15/3/18. // Copyright (c) 2015年 YouXianMing. All rights reserved. // import Foundation class People { // 变量值 var name : String var age : Int // 初始化方法 init() { name = "YouX

只能通过类而不能通过类的实例访问常量属性

1.静态属性.静态方法 在面向对象编程中,我们不仅可以通过对象访问方法和属性,还可以通过类来访问它们.这样的方法和属性就是“静态的”(static),必须用static关键字来声明. [php] view plaincopyprint? class staticExample { staticpublic $num = 0; staticpublic function sayNum() { echoself::num; } } 静态方法是以类作为作用域的函数.静态方法不能访问这个类中的普通属性,

使用java.util.concurrent.ThreadFactory类创建线程

工厂设计模式是Java中最常用的设计模式之一.它是一种创建型设计模式,能够用于创建一个或多个类所需要的对象.有了这个工厂,我们就能集中的创建对象. 集中创建方式给我们带来了一些好处,例如: 1. 能够很容易的改变类创建的对象或者创建对象的方式: 2. 能够很容易限制对象的创建,例如:我们只能为a类创建N个对象: 3. 能够很容易的生成有关对象创建的统计数据. 在Java中,我们通常使用两种方式来创建线程:继承Thread类和实现Runnable接口.Java还提供了一个接口,既ThreadFac

js 类创建的 三种方式

第一种方式:  简单的 JavaScript 类(使用工厂方法) 1. 首先 通过原型继承创建一个对象 第二种方式: 使用构造函数来定义 /**原型对象是类的唯一标识: * 当且仅当两个对象继承自同一个原型对象时, 它们才属于对一个类的实例. * 而构造函数则不能作为类的标识, 两个构造函数的prototype属性可能指向同一个原型对象, * 那么这两个构造函数创建的实例就属于同一个类. * */ function Range(from, to){ this.from = from; this.

Java单例设计模式(实现Java的一个类只有一个对象)

单例设计模式的定义:单例设计模式是一种软件设计模式,在它的核心包含一个称为单例类的核心类. 核心便是希望一个类只有一个对象.  如何实现类在内存中只有一个对象呢? 第一步:构造私有:第二步:本身提供一个对象:第三步:通过公共的方法让外界访问. 以下就是实现单例类: static关键字修饰对象,则该对象就变成静态资源,共享,形象点说,她就失足了,谁都可以上! class Single{ private static Single s = new Single(); //声明本类的引用类型变量,并且