[英]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.