十二、重载new、delete、()

1.堆内存操作符(operator new/delete)

适用于极个别情况需要定制的时候才用的到。一定很少用。

//重载的new delete,虽然说是用malloc和free实现,但还是会调用类的构造函数
class A{
public:
      A(){
       this->a = 0;
       cout<<"调用了无参构造函数"<a = a;
     }
    ~A(){
        cout<<"调用了析构函数"<

2.函数调用符号 (operator () )

把类对象像函数名一样使用。
仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。

class 类名{
   返值类型 operator()(参数类型)函数体
}


#include 
using namespace std;

class Sqr
{
public:
    int operator()(int i){
        return i*i;
     }
    double operator()(double d){
        return d*d;
     }
};

//STL C++的标准模板库经常使用

//a 普通int
//fp-->int(*)(int)
void func(int a,int(*fp)(int)
{
    cout<

你可能感兴趣的:(十二、重载new、delete、())