#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;
求解惑,求指导。
基本的語法知識,->是用在指針類型的類實例的。補充下,第二種情況下也僅僅是編譯能過吧,運行肯定就segmentfault了,原因是這時候並不會調用構造函數,當你用指針的時候一定要new一個對象,好了不多說了,在機場拿個抓機回複很累呀嗬嗬
指針類型有重載了->操作符 所以對於指針 使用->是沒問題的,對象則用.操作符。
當然對象如果重載了->也是可以用->的 就看你自己有沒有去實現他了 沒有的話 用肯定是不行的。
a->someMethod()一般情況下等價於(*a).someMethod()
.用於實例上,->用於指針上。。。
但僅僅是一般情況。