>在C ++中调用Method
你能告诉我一个区别吗? 和 - >调用C ++中的方法。
此代码工作正常,使用两种调用方法。
#include <iostream>
using namespace std;
class myclass
{
public:
string doSomething();
};
string myclass::doSomething()
{
return "done somethingn";
}
int main (int argc, const char * argv[])
{
myclass c;
std::cout << c.doSomething();
myclass *c2;
std::cout << c2->doSomething();
return 0;
}
我不明白2个电话的区别吗? 他们都工作?
箭头运算符用于从指向对象实例的指针调用方法。
点运算符用于从引用到对象的实例或本地定义的对象中调用方法。
如果您颠倒了两个示例中的运算符,那么您的代码将无法编译。
c2->doSomething();
相当于:
(*c2).doSomething();
即在调用方法之前指针正被取消引用。
查看Alf Steinbach的指针教程以获取更多帮助。
myclass *c2;
std::cout << c2->doSomething();
这是未定义的行为。 c2
未初始化。
你需要写
myclass *c2 = &c;
c2->doSomething();
c2->doSomething()
在语义上等同于(*c2).doSomething()
,它又与c.doSomething()
相同。
编辑
查看Alf Steinbach的指针教程
链接地址: http://www.djcxy.com/p/40583.html上一篇: > in calling a Method in C++
下一篇: What's an effective way to parse command line parameters in C++?