无法理解c ++中这种处理程序的概念

时间:2015-07-02 05:30:38

标签: c++ handlers

当我遇到一些新的东西时,我正在阅读一段代码。但是我试着编写自己的代码以便更好地理解。

#include<iostream>

using namespace std;

class material
{
public:
material()
{
    cout<<"material() called"<<endl;
}

bool test_func()
{
    cout<<"Hello World"<<endl;

    return true;
}
};

class server
{
private:
material *mat;

public:
server()
{
    cout<<"server() called"<<endl;
}
material *matrl()
{
    return mat;
}
};

class Handler
{
public:
Handler()
{
    cout<<"Handler() called"<<endl;
}

server svr;

bool demo()
{
    bool ret;
    ret=svr.matrl()->test_func();

    return ret;
}
};

int main()
{
Handler h;
cout<<"returned by demo():"<<h.demo()<<endl;

return 0;
}

即使我得到了所需的输出,也就是:

server() called
Handler() called
Hello World
returned by demo():1

但我在这里无法理解某些概念:

material *matrl()
{
    return mat;
}

和功能调用

ret=svr.matrl()->test_func();

这是如何运作的,这背后的概念是什么概念?有人可以帮我这个???

1 个答案:

答案 0 :(得分:1)

如果重写

,可以避免混淆
material *matrl()
{
    return mat;
}

material* matrl()
{
    return mat;
}

两者都是一样的。 它是一个返回指向材质类型对象的指针的函数

现在

ret=svr.matrl()->test_func();

因为matr1()返回指向您需要使用的对象的指针 - &gt;对于会员职能。或者 *(svr.matr1()).test_func();