>在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-&gt;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++?