C++ 为什么对常量的引用是一件事?

问题描述

考虑通过常量和引用常量传递参数

[assembly: ExportRenderer(typeof(Xamarin.Forms.TimePicker),typeof(TimePickerDialogCustomrenderer))]

namespace App1.Droid
{
class TimePickerDialogCustomrenderer : TimePickerRenderer
{
    private readonly Context _context;
    public TimePickerDialogCustomrenderer(Context context) : base(context)
    {
        _context = context;

    }
    protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.TimePicker> e)
    {
        base.OnElementChanged(e);
    }

    TimePickerDialog dialog;
    protected override TimePickerDialog CreateTimePickerDialog(int hours,int minutes)
    {
        dialog = new TimePickerDialog(_context,Resource.Style.TimePickerTheme,this,hours,minutes,false);
         
        return dialog;

    }
}
}

常量已经表示该值不会改变。那为什么程序员需要指定是按值传递参数还是按引用传递参数?

这个优化不应该是编译器做出的决定吗?

例如,如果参数是原始类型,例如 T function(T const x) {} T function(T const& x) {} char,那么生成一个副本供函数使用更划算。

如果是复杂类型的参数,例如 intstd::string 甚至是用户定义的参数,函数通过引用来处理它更划算。

然而,这些决定并不是程序员必须做出以任何方式影响性能的妥协的困境。

在我看来,对常量的引用是多余的。声明一个参数具有常量性质就足够了,编译器应该处理是按值还是按引用传递它。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)