2015-09-05 18 views
-1

8I刚学C++,面对一个有点像这样的代码:他们怎么在C++中的意思是:变量*空白,并与空白

virtual QVariant getProperty(uint ,const IContact * =0) const 
    { return QVariant(); } 
virtual bool setProperty(uint ,const QVariant &,IContact * =0) 
    {return false;} 

但是,我不知道是什么IContact接口* = 0或的QVariant &的意思。 “IContact”和“QVariant”是类。所以我认为在这里他们是指变量的类型。但我不明白他们为什么只在后面放了*或&。

请问你们能帮忙解释一下吗?

预先感谢您!

+0

这是太宽泛的问题,没有给这些代码片段更多的上下文。那么很简单,从技术角度回答:'IContact * = 0'传递一个指向'IContact'的指针,默认为'0',函数返回'QVariant'。但是不可能从该片段中知道预期的语义。 –

+0

@πάνταῥεῖ事实上,考虑到函数的名称和类型,语义非常简单。它定义了一个类的“接口”(尽管不是用纯虚函数)以供子类覆盖。 'uint'可能是属性ID,'QVariant const&'可能是设置的新值,我不知道可选的'IContact'是用于什么。 –

+1

_ @TươngNhư_如果你不能理清技术上的含义,那你实际上并没有_learn C++ _! –

回答

0

如果某个函数的参数未使用,则不必为其命名。在这种情况下,这些函数是virtual,这意味着它们将被派生类覆盖,派生类可以在覆盖的函数定义中使用这些参数。

const IContact* = 0表示“指向const IContact的指针”类型的未使用参数,其值不需要由调用方指定,如果调用方忽略其值,则使用null。

const QVariant&是“参考常量QVariant”类型的未使用参数。但是,调用者仍然必须指定其值。

+0

不错的尝试,看看我对OP的评论。 –

+0

另外,虽然我还没有做任何Google搜索,但是'QVariant'可能是Qt的一个变体类型,所以这可能来自KDE程序或库。当然,这只是一个猜测,但在一分钟后我会Google,我会得到一个更清晰的图片。 :-) –

+0

我有严重的疑问,如果这样差的问题实际上会为未来的研究提供价值:-P ... –