func(QWidget*const&widget)VS func(QWidget*const widget)

KcF*_*nMi 2 c++ qt qmap c++11 qt5

我注意到代码的安静甚至丢弃了&符号/参考信号.

QWidget* widget;
func(widget);
Run Code Online (Sandbox Code Playgroud)

以下表达式是否相同?

func(QWidget* const &widget)
func(QWidget* const widget)
Run Code Online (Sandbox Code Playgroud)

我知道这两个指针都无法修改为可以修改的东西.

专注于两者的实际效果的答案将更有价值.

Mat*_* F. 6

阅读从右到左的定义:

第一种方式:widget是对指向QWidget对象的const指针的引用

QWidget* const &widget
Run Code Online (Sandbox Code Playgroud)

第二种方式:widget是一个指向QWidget对象的const指针

func(QWidget* const widget)
Run Code Online (Sandbox Code Playgroud)

当然他们不一样.

这两个定义都有效,因为引用会被编译器自动解除引用.