Gor*_*son 69
对于指针,我们可以使用
*pointervariable.foo
Run Code Online (Sandbox Code Playgroud)
但是.运算符的优先级高于*运算符,因此.首先进行求值.所以我们需要用括号强制这个:
(*pointervariable).foo
Run Code Online (Sandbox Code Playgroud)
但是一直输入()很难,所以他们发展->成为说同样事情的捷径.如果要访问对象或对象引用的属性,请使用. 如果要通过指针访问对象的属性,请使用->
Tad*_*pec 57
点运算符不能重载,箭头运算符可以重载.箭头操作符通常用于指向指针(或类似指针的对象,如智能指针).点运算符不能应用于指针.
编辑当应用于指针箭头时,运算符相当于将点运算符应用于pointee(ptr-> field相当于(*ptr).field)
Joh*_*lph 16
该.运营商是直接成员访问.
object.Field
Run Code Online (Sandbox Code Playgroud)
箭头取消引用指针,以便您可以访问它指向的对象/内存
pClass->Field
Run Code Online (Sandbox Code Playgroud)
Tam*_*lei 13
pSomething->someMember
Run Code Online (Sandbox Code Playgroud)
相当于
(*pSomething).someMember
Run Code Online (Sandbox Code Playgroud)
ezp*_*zpz 10
目标.dot适用于物体; 箭头适用于指向对象的指针.
std::string str("foo");
std::string * pstr = new std::string("foo");
str.size ();
pstr->size ();
Run Code Online (Sandbox Code Playgroud)
->有指针时使用。使用.时,你有结构(类)。
当您要指向属于结构的属性时,请使用.:
structure.attribute
Run Code Online (Sandbox Code Playgroud)
当您要指向通过指针引用了内存的属性时,请使用->:
pointer->method;
Run Code Online (Sandbox Code Playgroud)
或与:
(*pointer).method
Run Code Online (Sandbox Code Playgroud)