64,648
社区成员
发帖
与我相关
我的任务
分享
void * operator new(size_t size)
{
void *p = malloc(size);
return (p);
}
void operator delete(void *p);
{
free(p);
}
class TestClass
{
public:
void * operator new(size_t size);
void operator delete(void *p);
// .. other members here ...
};
void *TestClass::operator new(size_t size)
{
void *p = malloc(size); // Replace this with alternative allocator
return (p);
}
void TestClass::operator delete(void *p)
{
free(p); // Replace this with alternative de-allocator
}
class TestClass
{
public:
void * operator new[ ](size_t size);
void operator delete[ ](void *p);
// .. other members here ..
};
void *TestClass::operator new[ ](size_t size)
{
void *p = malloc(size);
return (p);
}
void TestClass::operator delete[ ](void *p)
{
free(p);
}
int main(void)
{
TestClass *p = new TestClass[10];
// ... etc ...
delete[ ] p;
}
class A{
private:
int value;
public:
A(int value):value(value){}
A operator+(const A&a){
return A(value+a.value);
}
friend ostream& operator<<(ostream& os,const A&a){
os<<a.value;
return os;
}
};
int main()
{
A a(100);
A b(200);
cout<<a+b<<endl; //这里因为a和b是自定义类型,所以不能直接使用+来相加,需要定义一个函数
//来明确告诉编译器执行+所能产生的结果,这就是运算符重载
system("PAUSE");
return 0;
}