class Demo
{
int num;
public:
Demo setMyValue(Demo *objx)
{
cout<<"\nEnter a number";
cin>>(*objx).num;
return *objx;
}
...
};
在此上下文中声明“(* objx).num”的含义是什么?
在程序中使用这种输入方式是一个很好的编程习惯吗?
答案 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