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

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

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上测试运行通过,结果如下:

欢迎交流与讨论。

相关推荐
草履虫建模11 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq13 小时前
分布式系统安全通信
开发语言·c++·算法
学嵌入式的小杨同学13 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
Re.不晚14 小时前
Java入门17——异常
java·开发语言
精彩极了吧14 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
南极星100515 小时前
蓝桥杯JAVA--启蒙之路(十)class版本 模块
java·开发语言
baidu_2474386115 小时前
Android ViewModel定时任务
android·开发语言·javascript
CSDN_RTKLIB15 小时前
【四个场景测试】源文件编码UTF-8 BOM
c++
Dev7z15 小时前
基于 MATLAB 的铣削切削力建模与仿真
开发语言·matlab
不能隔夜的咖喱15 小时前
牛客网刷题(2)
java·开发语言·算法