微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。