提供三道面试题,大家讨论 1.c++在什么情况下可以new多次,但只delete一次而不造成内存泄露。2.用重载的方式实现10的16次方。3.世界上只有一个上帝,上帝可以创造人,人可以创造动物,动物有狗和猪,狗能叫能跑,猪能吃能睡,请用c++的思想描述出来。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 【C、C++技术交流群号】53271408【群的简介】c、c++、vc、音视频、网络通讯、驱动开发 1.c++在什么情况下可以new多次,但只delete一次而不造成内存泄露。通常得对应次数。如果new不分配内存的话连delete都可以省掉。2.用重载的方式实现10的16次方。条件太少。。3.世界上只有一个上帝,上帝可以创造人,人可以创造动物,动物有狗和猪,狗能叫能跑,猪能吃能睡,请用c++的思想描述出来。.... 第一题目给大家再解释一下 new 是分配内存的,而且可以多次分配,但在什么情况下多次分配后只需要一次delete而不造成内存泄露。 c++?第一题就不说了,没学过C++,第二题位数不够吧?需要一个数据结构。第三题不是C++了,是OOP了。 公布第一道题答案首先第一题不是不是孔已己出的,不重要,重要的是答案以及以后大家是否在自己的工程中是否会利用到这样的小技巧。当在同一块内存中多次分配空间后只需要delete一次就可以了。 1.c++在什么情况下可以new多次,但只delete一次而不造成内存泄露。重载new和delete,new只在一个heap上分配。 delete调用HeapDestroy,销毁这个heap。 此帖只为讨论,技术上无所谓高低,拒绝相互讥讽与谩骂。“当在同一块内存中多次分配空间后只需要delete一次就可以了。”类似于下面的简述,写部分代码表达主旨,大家讨论。void f() { T t(1); T& rt = t; t.~T(); //不建议 new (&t)T(2); new (&t)T(3); ... new (&t)T(n); delete ...}希望和大家讨论,这是我们新开的群(人气不够所以在csdn上发帖,希望版主放行)【C、C++技术交流群号】53271408【群的简介】c、c++、vc、音视频、网络通讯、驱动开发 第3题,感觉是类的继承virtual 上帝;class 人:public 上帝{public:动物间公共特性private:人独有的特性}class 狗:public 人{叫,跑}class 猪:public 人{吃,睡} 我都不懂。觉得第一个题目能否结构体new多几个,然后一个delete就释放了10的16次方可能需要字符串来表示了吧? 那如果 T 的里面,还有new呢? 正是 由于 T里面有 new功能才体现出这个多次new一次性delete的好处。对于第二题还有第三题大家继续讨论,对于第一题如果疑问加入【C、C++技术交流群号】53271408 正是 由于 T里面有 new功能才体现出这个多次new一次性delete的好处。如果new 的是 lpstr 等。而只能delete一次。你确认没内存泄露?不解,请明示。 1 是不是new在一片连续的空间中 就可以直接delelte[] x 删掉2 我简单理解为 是不是就是继承派生的关系 我来说说第3题我的看法吧!上帝和人有共同的行为,所以人和上帝可以抽象一个基类出来,姑且叫做CBaseCreate 上帝又只有一个,所以上帝的类应该是单例模式 上帝类CGod 人的类可以有多个,应该不是单例模式。人类CHuman 和动物也有共同点,都能被创造。所以人和动物也应该有共同的基类。CBaseAnimal 猪狗猫都属于动物,所以要抽象一个类出来CAnimal 但是猪狗猫之间又是不通的动物。行为又有不通,所以应该有各自的行为 也就是方法。那么综上所诉,我的C++设计应该是这样的!class CBaseAnimal{public: virtual void behaviour() = 0;};class CBaseCreate{public: virtual void Create( CBaseAnimal *pAnimal) = 0;};class CGod : public CBaseCreate{private: CGod *m_pGod;public: virtual void Create( CBaseAnimal *pAnimal){}; static CGod * Instance(){ if(!m_pGod) return (m_pGod = new CGod());};private: CGod(){m_pGod = NULL;};};class CHuman : public CBaseCreate, public CBaseAnimal{ virtual void Create( CBaseAnimal *pAnimal){}; virtual void behaviour() {};};水平有限,请各位指点! aa_22_999是个好同志啊,党和人民感谢你,我代表秦始皇给你说声thanks 求助:系统服务如何显示调用程序的窗体 数据存储与查找 MFC怎样得到按钮的DC 分不够可以加 WINDOWS调色板问题 高手请进 菜鸟请问,为什么在C**VIEW中有时有pdoc->SetColor的方法有时却没有? 在文档程序如何添加第二个工具条? 怎样才能返回 vector 中的 CStringArray 的正确引用??? byte转化为long?? 一个关于二叉树的数据结构题,帮帮我啊 我在cmyappview中创建了一个对话框,如何在对话框上画图 VC在内存中操作图片问题
条件太少。。3.世界上只有一个上帝,上帝可以创造人,人可以创造动物,动物有狗和猪,狗能叫能跑,猪能吃能睡,请用c++的思想描述出来。
....
第二题位数不够吧?需要一个数据结构。
第三题不是C++了,是OOP了。
首先第一题不是不是孔已己出的,不重要,重要的是答案以及以后大家是否在自己的工程中是否会利用到这样的小技巧。
当在同一块内存中多次分配空间后只需要delete一次就可以了。
delete调用HeapDestroy,销毁这个heap。
类似于下面的简述,写部分代码表达主旨,大家讨论。void f()
{
T t(1);
T& rt = t;
t.~T(); //不建议
new (&t)T(2);
new (&t)T(3);
...
new (&t)T(n); delete ...
}
希望和大家讨论,这是我们新开的群(人气不够所以在csdn上发帖,希望版主放行)【C、C++技术交流群号】53271408
【群的简介】c、c++、vc、音视频、网络通讯、驱动开发
virtual 上帝;
class 人:public 上帝
{
public:
动物间公共特性
private:
人独有的特性
}
class 狗:public 人
{
叫,跑
}
class 猪:public 人
{
吃,睡
}
觉得第一个题目能否结构体new多几个,然后一个delete就释放了
10的16次方可能需要字符串来表示了吧?
对于第二题还有第三题大家继续讨论,对于第一题如果疑问加入【C、C++技术交流群号】53271408
如果new 的是 lpstr 等。而只能delete一次。你确认没内存泄露?不解,请明示。
2 我简单理解为 是不是就是继承派生的关系
上帝和人有共同的行为,所以人和上帝可以抽象一个基类出来,姑且叫做CBaseCreate
上帝又只有一个,所以上帝的类应该是单例模式 上帝类CGod
人的类可以有多个,应该不是单例模式。人类CHuman 和动物也有共同点,都能被创造。所以人和动物也应该有共同的基类。CBaseAnimal
猪狗猫都属于动物,所以要抽象一个类出来CAnimal 但是猪狗猫之间又是不通的动物。行为又有不通,所以应该有各自的行为 也就是方法。那么综上所诉,我的C++设计应该是这样的!class CBaseAnimal
{
public:
virtual void behaviour() = 0;
};class CBaseCreate
{
public:
virtual void Create( CBaseAnimal *pAnimal) = 0;
};class CGod : public CBaseCreate
{
private:
CGod *m_pGod;
public:
virtual void Create( CBaseAnimal *pAnimal){};
static CGod * Instance(){ if(!m_pGod) return (m_pGod = new CGod());};
private:
CGod(){m_pGod = NULL;};
};class CHuman : public CBaseCreate, public CBaseAnimal
{
virtual void Create( CBaseAnimal *pAnimal){};
virtual void behaviour() {};};水平有限,请各位指点!