“(* objx).num;”是什么意思?“在下面的上下文中

时间:2011-11-22 20:22:29

标签: c++

class Demo
{

         int num;
         public:
               Demo setMyValue(Demo *objx) 
               {
                   cout<<"\nEnter a number";
                   cin>>(*objx).num;
                   return *objx;
               }
               ...
};
  1. 在此上下文中声明“(* objx).num”的含义是什么?

  2. 在程序中使用这种输入方式是一个很好的编程习惯吗?

3 个答案:

答案 0 :(得分:1)

它是指针解引用运算符。

但是,如果不首先检查NULL,就不是一个好主意。

答案 1 :(得分:0)

*是解除引用运算符。您也可以objx->num(前提是objx != NULL)。此外,这是很好的风格。大多数人倾向于使用objx->num来提高可读性,但最终(*objx).num是等效的。但是,为了返回对象本身的副本,return *objx是必需的。

答案 2 :(得分:0)

其他人已将#1定义为指针解除引用运算符。

Re#2:它看起来像是fluent interface的尝试,但会误导用户并可能导致内存泄漏。

Demo a = ...;
Demo b = ...;

a = a.setMyValue(b);  // <- could be a leak