在c++中,点(.)操作符和->有什么区别?


当前回答

的。(点)运算符通常用于从类的实例(或类的静态字段/方法)中获取字段/调用方法。

p.myField, p.myMethod() -一个类的p个实例

->(箭头)操作符用于从类指向的内容获取字段/调用方法。

p->myField, p->myMethod() - p指向类

其他回答

目标。 Dot用于对象;箭头作用于指向对象的指针。

std::string str("foo");
std::string * pstr = new std::string("foo");

str.size ();
pstr->size ();

->操作符用于处理指针,点用于其他操作符。 如果我们有这样一个struct类:

struct class{ int num_students; int yr_grad; };

我们有一个类的实例* curr_class(类指针),然后获取我们要做的学生数

cout << curr_class->num_students << endl;

如果我们有一个简单的类对象,比如class_2016,我们将这样做

cout << class_2016.num_students << endl;

对于指向类的指针,->操作符等价于

(*obj).mem_var

注意:对于一个类,访问类的成员函数的方式也将是相同的

很简单,只要你看到

 x->y

知道它是一样的

 (*x).y

当你有指针时使用->。 使用。当你有结构(类)时。

当你想要指向属于结构使用的属性时:

structure.attribute

当你想通过指针指向一个有内存引用的属性时,使用->:

pointer->method;

或与:

(*pointer).method

作为指针,我们可以用

*pointervariable.foo

但是。运算符的优先级高于*运算符,因此。首先求值。所以我们需要用括号强制执行:

(*pointervariable).foo

但是一直键入()是很困难的,所以他们开发了->作为表示相同内容的快捷方式。如果您正在访问对象或对象引用的属性,请使用。如果您正在通过指针访问对象的属性,请使用->