发现一点c++的不足之处

我碰到这样一种情况:一个函数,它的参数是const Bigint &a,同时我重载了Bigint的下标访问,就是[]这个符号。中括号的重载我是这样写的:

1 int &operator [](int x){ return a[x]; }

,a[x]是Bigint的成员a的一个元素。那么问题来了,有的Bigint带const,有的不带,访问不带const的Bigint对象没问题。但是访问带const的就会出错,因为const int&不能转换成int&。。

我想:把那个函数的int改成const int试试看,结果发现我的原意是要改变不带const的BIgint的值,结果现在改不了,因为c++的逻辑是:如果你有可能搞事情,就直接禁止你搞事情。而函数又不能有同类型,非const和const的重载,所以这个问题根本无法解决。

据张子苏大佬说,好像可以用c++11的一个什么reference解决,但是noip不能用c++11呀。。所以只能不优雅了。。

时间: 2024-08-08 15:16:03

发现一点c++的不足之处的相关文章

ROS脚本内调用脚本的一点问题

ROS计划任务的动作没有正确执行,测试了一下,发现一点问题.计划任务触发动作直接调用脚本(/sys sch .... on-event={script})或者在winbox内script界面调用脚本时,脚本内的/sys scr run script命令不被执行,此命令后的其它语句也不执行.计划任务触发动作为/sys scr run script(/sys sch .... on-event={/sys scr run script})或者在console执行命令:/sys scr run scr

浅谈RAII&智能指针

关于RAII,官方给出的解释是这样的"资源获取就是初始化".听起来貌似不是很懂的哈,其实说的通俗点的话就是它是一种管理资源,避免内存泄漏的一种方法.它可以保证在各种情况下,当你对对象进行使用时先通过构造函数来进行资源的分配和初始化,最后通过析构函数来进行清理,有效的保证了资源的正确分配和释放.(特别是在异常中,因为异常往往会改变代码正确的执行顺序,这就很容易引起资源管理的混乱和内存的泄漏) 其中智能指针就是RAII的一种实现模式,所谓的智能就是它可以自动化的来管理它所指向那份空间的资源

威胁驱动的网络安全方法论

声明:本文主要内容取自洛克希德·马丁公司的论文——A Threat-Driven Approach to Cyber Security,鉴于原论文篇幅较长只提取了其中部分内容,想要全面准确了解论文内容的朋友建议去阅读原文.笔者翻译这部分内容,希望能够抛砖引玉,为相关领域的相关工作人员带来一点不同的思路或启发,从而更好地维护企业/组织的网络安全.欢迎交流与指正,转载请联系[email protected]. 安全界早已有'未知攻,焉知防'的说法,但如果我们对于攻防存在不正确的认知,就很难理解如何做

结对项目博客——四则运算题目生成程序的改进与分析

一.结对编程 结对成员: 康家华(学号后三位190) 1. 结对编程照片 2. 结对编程的优点 1) 单人编程时,由于每个人的精力有限,无法长时间的高度集中精力实现高质量编程.而在结对编程时,由于两个人的身份可以互换,能够有效地提高效率. 2) 在实现某项功能的时候,如果一个人的算法不够优秀,那么对方能够提出更为简单易行的算法,从而提高代码质量. 3) 如果是单人编程,在设计算法时很有可能会有漏洞,而且如果在设计算法之前没有考虑到一些边界条件的话,测试时也很难发现这些bug.而在结对编程时,两个

为什么我说Rust是靠谱的编程语言

为什么我说Rust是靠谱的编程语言 作者:Liigo(庄晓立) 时间:2015年5月16日 原创链接:http://blog.csdn.net/liigo/article/details/45757123 版权声明:未经作者许可不得转载:授权转载需注明出处. 序言:本文试图帮您解答"我要不要(投入大量时间和精力)学习Rust语言?"这个问题.作者尽量较少的谈及Rust语言本身,反而尝试从Rust语言周边入手,长时间.大范围.多角度地考察,研判Rust语言是否靠谱,并给出尽可能客观的理由

什么是跨界营销

在我的人生经历中,总是会听到各种各样的经验指导,我渐渐发现一点:有些经验可以节省你的时间,但有些经验是即便您当下觉得无比正确了,却是知易行难,且需要自己不断去思考去尝试才能知道是否真的有用.在某种程度上,我很羡慕类似维克托·迈尔-舍恩伯格(<大数据时代>的作者)这样的畅销书作者,可以把3句话写成厚厚的一本书,而我自愧弗如.有段时间,我甚至有些疑惑,为什么无论如何简单的观点,经过一些著名的高科技企业作为案例抑或充满成功光环的人士做背书,就可以摇身一变,成成令人追捧的著作.后来我自己悟到:大多数人

Spring源码分析——AOP实现(2)

文章深入讲解了Spring中AOP的实现机制和原理以及使用 AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强:而动态代理则在运行时借助于 JDK 动

Spring AOP 实现原理与 CGLIB 应用--转

AOP(Aspect Orient Programming),作为面向对象编程的一种补充,广泛应用于处理一些具有横切性质的系统级服务,如事务管理.安全检查.缓存.对象池管理等.AOP 实现的关键就在于 AOP 框架自动创建的 AOP 代理,AOP 代理则可分为静态代理和动态代理两大类,其中静态代理是指使用 AOP 框架提供的命令进行编译,从而在编译阶段就可生成 AOP 代理类,因此也称为编译时增强:而动态代理则在运行时借助于 JDK 动态代理.CGLIB 等在内存中“临时”生成 AOP 动态代理

再聊移动端页面的适配

再聊移动端页面的适配 https://www.w3cplus.com/css/vw-for-layout.html  原文网址 Flexible承载的使命 Flexible到今天也有几年的历史了,解救了很多同学针对于H5页面布局的适配问题.而这套方案也相对而言是一个较为成熟的方案.简单的回忆一下,当初为了能让页面更好的适配各种不同的终端,通过Hack手段来根据设备的dpr值相应改变<meta>标签中viewport的值: <!-- dpr = 1--> <meta name=