你能告诉我a之间的区别吗?和 - >调用C++中的方法.
使用两种调用方法,此代码工作正常.
#include <iostream>
using namespace std;
class myclass
{
public:
string doSomething();
};
string myclass::doSomething()
{
return "done something\n";
}
int main (int argc, const char * argv[])
{
myclass c;
std::cout << c.doSomething();
myclass *c2;
std::cout << c2->doSomething();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我不明白2个电话之间的区别?他们都工作?
J T*_*J T 10
箭头运算符用于从指向对象实例的指针调用方法.
点运算符用于从引用到对象的实例或在本地定义的对象上调用方法.
如果您在两个示例中颠倒了运算符,则代码将无法编译.
Dav*_*ton 10
c2->doSomething();
Run Code Online (Sandbox Code Playgroud)
相当于:
(*c2).doSomething();
Run Code Online (Sandbox Code Playgroud)
即在调用方法之前指针被取消引用.
查看Alf Steinbach的指针教程以获得更多帮助.
myclass *c2;
std::cout << c2->doSomething();
这是未定义的行为.c2未初始化.
你需要写
myclass *c2 = &c;
c2->doSomething();
Run Code Online (Sandbox Code Playgroud)
c2->doSomething()在语义上等同于(*c2).doSomething()与...相同的c.doSomething()
编辑
查看Alf Steinbach的指针教程
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |