无法理解 c++ 中处理程序的概念
Unable to understand this concept of handlers in c++
当我遇到新的东西时,我正在研究一段代码。但是我尝试编写自己的代码以便更好地理解。
#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();
这是如何运作的,其背后的概念是什么?有人可以帮我解决这个问题吗???
重写可以避免混淆
material *matrl()
{
return mat;
}
至
material* matrl()
{
return mat;
}
两者相同。
它是一个返回指向 material 类型
对象的指针的函数
现在
ret=svr.matrl()->test_func();
因为 matr1()
returns 指向您需要使用的对象的指针 -> 用于成员 function.Or
*(svr.matr1()).test_func();
当我遇到新的东西时,我正在研究一段代码。但是我尝试编写自己的代码以便更好地理解。
#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();
这是如何运作的,其背后的概念是什么?有人可以帮我解决这个问题吗???
重写可以避免混淆
material *matrl()
{
return mat;
}
至
material* matrl()
{
return mat;
}
两者相同。 它是一个返回指向 material 类型
对象的指针的函数现在
ret=svr.matrl()->test_func();
因为 matr1()
returns 指向您需要使用的对象的指针 -> 用于成员 function.Or
*(svr.matr1()).test_func();