一个 C++程序,哪里错了,高手进,谢谢!
答案:2 悬赏:20 手机版
解决时间 2021-02-12 15:46
- 提问者网友:辞取
- 2021-02-12 04:14
5;分配大小为size的内存空间
*s='a', 0 warning(s)
哪里错了,望高手指点,谢谢;< .1\.1\:\C++上机\5.1\new delete重载;//C++上机\ function not called
执行 cl.exe 时出错.
new delete重载.exe - 1 error(s);用字符串tag赋值
return s;/: see declaration of 'm'
G;C++上机\..
new delete重载.cpp
G:\
char *m;
public:
void *operator new(size_t size);delete' : error in function definition or declaration:\C++上机\5.1\new delete重载.1\delete' : 'void (void *)' differs in levels of indirection from 'void *(void *)'<: error in function definition or declaration; function not called
G:operator new(size_t size,char tag)
{
cout<<"new2 operator",char tag);new1 operator"<
G:\5: '.cpp(40) : error C2264:s'new delete重载.cpp(38) .1\<分配一块大小为size的内存
void *operator new(size_t size;
G:\:\C++上机\5.1\new delete重载::operator delete(void *p)
{
cout强制类型转换
delete[] s;
}
void main()
{memmanager *m=new memmanager();new delete重载.cpp(37) ;delete operator"<
class memmanager{
char *s#include <
最佳答案
- 五星知识达人网友:玩世
- 2021-02-12 04:46
char tag);endl;
char *s=new char[size];//修改完毕;/这里不要重复定义m.
delete[] m;
char *s=new char[size]::operator new(size_t size)
{
cout<<"new1 operator" /::operator delete[](void *p)
{
cout<; //
void *memmanager;/强制类型转换
delete[] s;
}
void main()
{memmanager *m=new memmanager().h>
using namespace std;
m=new('B') memmanager();
delete[] m;"//用字符串tag赋值
return s;/a'
char *s=(char *)p;/赋值
return s;delete operator"<<endl;<,你让我学到东西了.
/,char tag)
{
cout<释放指针p所指向的一块内存空间
};/VC编译成功
#include <///返回指针
}
void memmanager;
*s=tag; //<new2 operator"<<endl;返回指针
}
void *memmanager;/分配大小为size的内存空间
*s='"::operator new(size_t size;iostream>a'<用字符'<
char *m;
public:
void *operator new(size_t size);分配一块大小为size的内存,并且用字符tag赋值
void operator delete[](void *p);//分配一块大小为size的内存
void *operator new(size_t size;//
class memmanager{
char *s;
#include<stddef/
char *s=new char[size];//修改完毕;/这里不要重复定义m.
delete[] m;
char *s=new char[size]::operator new(size_t size)
{
cout<<"new1 operator" /::operator delete[](void *p)
{
cout<; //
void *memmanager;/强制类型转换
delete[] s;
}
void main()
{memmanager *m=new memmanager().h>
using namespace std;
m=new('B') memmanager();
delete[] m;"//用字符串tag赋值
return s;/a'
char *s=(char *)p;/赋值
return s;delete operator"<<endl;<,你让我学到东西了.
/,char tag)
{
cout<释放指针p所指向的一块内存空间
};/VC编译成功
#include <///返回指针
}
void memmanager;
*s=tag; //<new2 operator"<<endl;返回指针
}
void *memmanager;/分配大小为size的内存空间
*s='"::operator new(size_t size;iostream>a'<用字符'<
char *m;
public:
void *operator new(size_t size);分配一块大小为size的内存,并且用字符tag赋值
void operator delete[](void *p);//分配一块大小为size的内存
void *operator new(size_t size;//
class memmanager{
char *s;
#include<stddef/
全部回答
- 1楼网友:底特律间谍
- 2021-02-12 05:48
出错原因:
自定义的类名string,与标准库里的string命名冲突了。
解决方法:
1. 自定义的类名改成别的名称;
2. 给自定义的类型加个命名空间;
用第1种解决方法修改后的代码如下:
//////////////////////////////////////////////////////////////////////////
class customstring
{
private:
char *str;
public:
customstring(char *s=" ")
{
str=new char[strlen(s)+1];
strcpy(str,s);
}
~customstring()
{
if (str)
{
delete []str;
str=null;
}
}
void print()
{
cout<<str<<endl;
}
customstring &operator=(const customstring &s);
};
customstring& customstring::operator=(const customstring &s)
{
if (this==&s)
return *this;
delete []str;
str=new char[strlen(s.str)+1];
strcpy(str,s.str);
return *this;
}
//////////////////////////////////////////////////////////////////////////
测试结果:
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯