今天七夕,群友让我帮忙给他分配一个对象,于是我。。。

今天七夕,群友让我帮忙给他分配一个对象,于是我只好尝试给他分配对象了:

cpp 复制代码
CGirlFrined *pGF = new CGirlFrined("大屌萌妹");

int nRet = (群友).SetGirlFriend(pGF);

if (nRet != 0)
{
    alert("分配失败!");
}

后来觉得这段代码过于简单,分配的方法也有些过于简单了,于是我参考了网上的代码,然后丰富了代码内容,包含NTR在内的更多的分配方式:

cpp 复制代码
#include <iostream>
#include <list>

using namespace std;

class CGirlFriend {
public:
	string name;
	int age;
	CGirlFriend() {
		this->name = "小萝莉";
		this->age = 0;
	}
	CGirlFriend(const string& name, int age = 12)
		: name(name), age(age)
	{}

	static void* operator new(size_t size){       
		cout << "女朋友准备中。。。" << endl;
	return malloc(size);
	}

		static void* operator new(size_t size, CGirlFriend* ptr){    
		cout << "NTR别人的女朋友。。。" << endl;
	return ptr;
	}

		static void* operator new[](size_t size) {     
		cout << "一大波女朋友准备中。。。" << endl;
		return malloc(size);
	}

		static void* operator new[](size_t size, list<void*>& lt) {    

		cout << "女朋友们的聚会准备中。。。" << endl;
		void* tmp = malloc(size);
		lt.push_back(tmp);
		return tmp;
	}
};


int main(void)
{

	CGirlFriend* gf1 = new CGirlFriend("小萝莉");

	CGirlFriend* gf2 = new(gf1) CGirlFriend;

	delete gf2;

	CGirlFriend* gfs = new CGirlFriend[10]{ { "萌妹子", 19 } };

	for (int i = 0; i < 10; ++i)
		cout << (gfs + i)->name.c_str() << endl;

	delete[] gfs;

	list<void*> girlList;

	CGirlFriend* gfss1 = new (girlList) CGirlFriend[10];
	for (int i = 0; i < 10; ++i)
		cout << (gfss1 + i)->name.c_str() << endl;

	CGirlFriend* gfss2 = new (girlList) CGirlFriend[20];

	for (auto& ptr : girlList)
		delete[] ptr;

	system("pause");

	return 0;

}

此代码在vs2015上测试运行通过,结果如下:

欢迎交流与讨论。

相关推荐
死磕音视频14 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
WL学习笔记16 小时前
C & C++ 内存管理
c++·c++内存管理
顽疲16 小时前
Java vue 养老系统源码详解:月账单 care_month_bill 与 Quartz 扣费 Job 实践
java·开发语言·vue.js·vue养老·springboot养老·java养老
Wang's Blog16 小时前
Java 项目实战: 交友项目 - 安装开发工具与环境准备
java·开发语言·交友
宛 禾18 小时前
Qt 控件入门:QLabel 从拖拽到对象树,一篇讲透
c++·qt·学习
hetao173383718 小时前
联盟场-提高组-R7 & ZYZSC-S-Round 11
c++·算法
程序喵大人18 小时前
【C++入门】编译链接模型 - 07 链接器怎样把符号对上号
开发语言·c++·编译器·编译链接·链接器
微三云 - 廖会灵 (私域系统开发)18 小时前
供应链系统实战:多渠道订单聚合与分布式库存一致性方案总结
开发语言·分布式·php
局部有解19 小时前
Hot100 - 三数之和
数据结构·c++·算法
学逆向的19 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全