繁体   English   中英

用于解引用类成员变量的C ++语法

[英]C++ syntax for dereferencing class member variables

这更多是一个语法优雅的问题,但是我正在学习C ++并使用指针。 如果我有一个类Car,则可以使用以下方法创建指向该类新实例的指针:

Car * Audi = new Car;

如果该类具有成员变量权重(例如,无符号int),则可以使用

(*Audi).weight

要么

Audi->weight

如果该类的成员变量age本身就是一个指针,则可以使用以下任一方法进行访问

*((*Audi).age)

要么

*(Audi->age)

除了这两种(当然不是特别复杂)取消引用指针的方法之外,还有其他方法吗? 我想

Audi->*age

会工作,但可惜没有。

(我很欣赏访问器通常更可取,我只是感兴趣。)

*(Audi->age)

您不需要括号,因为前缀运算符的优先级非常低:

*Audi->age

没有人提到过这种方式:

Audi->age[0]

从语法上讲,不,除非您想编写一个函数或宏来执行此操作。 您可以,但是如果您问我,只需使用访问器。 另外,您也不想在堆上分配大多数对象。 只需将它们声明为type foo; type foo = type()并将它们放到堆栈中。 除非您有明确的充分理由,否则不要将具有动态分配的内容放到堆上,因为动态分配的开销很大。

您提到的一种使用age指向的值的常用方法是:

*(Audi->age)

->*与指针指向方法有完全不同的含义。

在现代C ++中,您通常不会过多地接触指针。 可以探索,但是,一旦开始编写实际代码,请尝试尽可能避免使用指针。 堆栈是你的朋友:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM