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

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

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

欢迎交流与讨论。

相关推荐
froginwe118 分钟前
Maven 仓库概述
开发语言
二川bro41 分钟前
Python在AI领域应用全景:2025趋势与案例
开发语言·人工智能·python
CoderYanger1 小时前
优选算法-队列+宽搜(BFS):72.二叉树的最大宽度
java·开发语言·算法·leetcode·职场和发展·宽度优先·1024程序员节
招摇的一半月亮1 小时前
P2242 公路维修问题
数据结构·c++·算法
疏狂难除1 小时前
随便玩玩lldb (二)
开发语言·后端·rust
星轨初途1 小时前
数据结构排序算法详解(5)——非比较函数:计数排序(鸽巢原理)及排序算法复杂度和稳定性分析
c语言·开发语言·数据结构·经验分享·笔记·算法·排序算法
b***65322 小时前
GO 快速升级Go版本
开发语言·redis·golang
一点 内容2 小时前
深度解析OurBMC后端模式:全栈技术架构与运维实践
java·开发语言
f***01932 小时前
CC++链接数据库(MySQL)超级详细指南
c语言·数据库·c++