搜尋

首頁  >  問答  >  主體

C++中类的方法的调用 . 和->的区别

#include <iostream>
using namespace std;
class Person{
    public:
    Person(){
    };
    void speak(){
    cout<<"Helloworld"<<endl;
};
};
int main()
{
    Person p;
    p->speak(); //error
    p.speak();
    return 0;
}

为什么这里面会出现错误?也就是说在什么情况下使用 -> ?

如果把里面的代码换成:

Person *p;
    p->speak();//right   这里面是不是默认实例化了一个类?
    p.speak();//error
    return 0;

求解惑,求指导。

巴扎黑巴扎黑2807 天前551

全部回覆(3)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 11:04:31

    基本的語法知識,->是用在指針類型的類實例的。補充下,第二種情況下也僅僅是編譯能過吧,運行肯定就segmentfault了,原因是這時候並不會調用構造函數,當你用指針的時候一定要new一個對象,好了不多說了,在機場拿個抓機回複很累呀嗬嗬

    回覆
    0
  • 黄舟

    黄舟2017-04-17 11:04:31

    指針類型有重載了->操作符 所以對於指針 使用->是沒問題的,對象則用.操作符。

    當然對象如果重載了->也是可以用->的 就看你自己有沒有去實現他了 沒有的話 用肯定是不行的。

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 11:04:31

    a->someMethod()一般情況下等價於(*a).someMethod()
    .用於實例上,->用於指針上。。。

    但僅僅是一般情況。

    回覆
    0
  • 取消回覆