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

时间:2012-06-28 14:57:31

标签: c++ class pointers syntax

这更像是一个句法优雅的问题,但我正在学习C ++并且在玩指针。如果我有一个类Car,我可以使用

创建指向该类的新实例的指针
Car * Audi = new Car;

如果该类具有成员变量权重(比如说是unsigned int),我可以使用

访问它
(*Audi).weight

Audi->weight

如果该类的成员变量age本身就是一个指针,我可以使用

访问它
*((*Audi).age)

*(Audi->age)

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

Audi->*age

可行,但唉不行。

(我很欣赏访问者通常更喜欢,我只是感兴趣。)

4 个答案:

答案 0 :(得分:5)

*(Audi->age)

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

*Audi->age

答案 1 :(得分:1)

没有人提到过这种方式:

Audi->age[0]

答案 2 :(得分:0)

从语法上讲,不,除非您想编写函数或宏来执行此操作。你可以,但如果你问我,只需使用访问器。此外,您不希望在堆上分配大多数对象。只需将它们声明为type foo;type foo = type(),然后将它们放在堆栈中。除非您有充分的理由这样做,否则不应该使用动态分配将事物放在堆上,因为动态分配的开销很高。

答案 3 :(得分:0)

您访问age指向的值的常用方法是您提到的那个:

*(Audi->age)

->*有一个完全不同的含义,它与指针指向方法有关。

在现代C ++中,你通常不会过多地接触指针。它可以探索,但是,一旦你开始编写真正的代码,尽量避免使用指针。 Stack是你的朋友:)

相关问题