C++中类的方法的调用 . 和->的区别
巴扎黑
巴扎黑 2017-04-17 11:02:31
0
3
544
#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;

求解惑,求指导。

巴扎黑
巴扎黑

全部回覆(3)
伊谢尔伦

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

黄舟

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

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

洪涛

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

但僅僅是一般情況。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板