首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >从重载下标操作符调用虚拟函数

从重载下标操作符调用虚拟函数
EN

Stack Overflow用户
提问于 2012-06-19 13:35:21
回答 1查看 248关注 0票数 0

我试图在抽象类上重载下标操作符([]),重载调用的函数将在具体对象中实现。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class CollectionBase {
public:
    double& operator[] (const int nIndex)
    {
        return getValue(nIndex);
    }

    virtual double getValue(int index) = 0;
};

class Collection    : public CollectionBase
{
    double getValue(int index) { return 0; }
};

我遇到的问题是,我的编译器在重载时调用getValue时抛出了一个错误。

对非const的引用的

初始值必须是l值。

有人知道我想做什么的语法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-19 13:37:46

问题是,您正在返回对从getValue返回的临时值的引用。要么使两个函数返回double&,要么都返回double

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11109811

复制
相关文章
【C++】函数重载 ② ( 重载函数调用分析 | 函数重载特点 | 函数重载与默认参数 )
重载函数 调用查询 分析 : 调用一个重载函数 , 如何从多个重载函数中找出自己要调用的函数 , 流程如下 :
韩曙亮
2023/10/15
3340
【C++】函数重载 ② ( 重载函数调用分析 | 函数重载特点 | 函数重载与默认参数 )
函数调用运算符重载
函数调用运算符重载----重载小括号() #include<iostream> using namespace std; class wood { public: //函数调用运算符重载用于类中-------重载小括号 void operator()(int num) { cout << "木头数量为" << num << endl; } int operator()(int num1, int num2) { return num1 + num2; } };
大忽悠爱学习
2021/02/22
5210
操作符重载
游客是你,风景是我,无法避免,让你经过。——《稀客》 中文文档 kotlin里我们可以进行操作符重载,以达到对象+对象、-对象这样的操作: // 定义一个类 data class Point(val x: Int, val y: Int) // 对其进行操作符重载,让其能够使用-Point()语法 operator fun Point.unaryMinus() = Point(-x, -y) val point = Point(10, 20) println(-point) // 输出“Poi
阿超
2022/09/29
3340
操作符重载
C++ 操作符重载形式——成员函数 or 友元函数
操作符重载,又名运算符重载,是 C++ 多态的重要实现手段之一。通过运算符重载对运算符功能进行特殊定制,使其支持特定类型对象的运算,执行特定的功能,增强 C++ 的扩展功能。
恋喵大鲤鱼
2022/12/02
1.1K0
【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )
个对象 Student s1, s2 之间进行 等号运算 , 使用一个现有对象 为 另外一个现有对象赋值 ;
韩曙亮
2023/10/15
4050
【C++】运算符重载案例 - 字符串类 ② ( 重载 等号 = 运算符 | 重载 数组下标 [] 操作符 | 完整代码示例 )
析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>
通过下面primer中的一道习题,可以更深刻的了解,析构函数,复制构造函数,赋值操作符重载,默认构造函数的使用。 但是我的结果与primer习题解答里面的并不相同,可能是编译器不同的原因导致。 // test1107.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> using namespace std; struct Exam{ Exam(){ cout<<"Exam()"<<e
用户1154259
2018/01/17
9230
析构函数-复制构造函数-赋值操作符重载-默认构造函数<代码解析>
Groovy重载操作符
最近在读《Groovy in action》一本书重新复习了Groovy的一些语法特性,迷恋上这个重载操作符的功能,爽的不要要的。分享一个Demo。
FunTester
2020/01/10
7430
【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )
对集合使用 " + " 运算符 , 其作用相当于 调用 plus 方法 , " + " 符号两侧的值就是 plus 方法的
韩曙亮
2023/03/30
1.2K0
【Groovy】集合遍历 ( 操作符重载 | 集合中的 “ + “ 操作符重载 | 集合中的 “ - “ 操作符重载 | 代码示例 )
【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )
对 map 集合 使用 " - " 操作符 , 相当于调用了 map 集合的 minus 方法 , 该方法传入
韩曙亮
2023/03/30
7190
【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )
C++重载操作符
什么叫重载操作符?这要先说什么是操作符,其实最简单的:+、-、*、/、<<就都是操作符,这些也是很常见的重载操作符。
Cloudox
2021/11/23
3280
C++ 重载操作符
C++ 几乎可以重载全部的运算符,而且只能够重载C++中已经有的。 · 不能重载的运算符:“.”、“.*”、“::”、“?:” · 重载之后运算符的优先级和结合性都不会改变。 可以重载为类的非静态成员
雪碧君
2023/02/15
2830
内存操作符重载(new/delete)
内存操作符 new 和 delete 系统本身就提供了非常稳固的方法,很少会有情况用到自己重载的 new 和 delete,除非是想实现什么特别的功能,比如在申请内存后自动填入什么数据等等,当然这并不是本文讨论的重点,本文的重点是记录如何重载这两个操作符。
我与梦想有个约会
2023/10/20
1010
Kotlin Vocabulary | 操作符重载
当我们在处理可以添加、删除、比较或者连接的类型时,我们通常需要写很多冗长和重复的代码。但在 Kotlin 中,我们可以借助 操作符重载,为这些类型写出更具表现力和简洁的代码。
Android 开发者
2022/09/23
3880
Kotlin Vocabulary | 操作符重载
【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )
对 map 集合使用 " + " 操作符 , 操作符两侧都是 map 集合 , 调用的是 map 集合的 plus 方法 , plus 函数有
韩曙亮
2023/03/30
7510
【Groovy】map 集合 ( map 集合操作符重载 | + 操作符重载 | 代码示例 )
c++操作符重载
定义 运算符重载的 实质 是 函数的重载 使用意义 赋予操作符更多的意义,同一个运算符,对不同类型的操作数,所发生的行为不同是 程序更加简洁 写法格式:返回值 operator运算符(参数列表){} 重载的要求: 1、内置类型的操作符不能被重载 2、不能为内置类型定义其他的操作符 3、操作符重载不能改变操作符的优先级 4、操作数个数不能改变 重载方式: 1、类的成员方法 2、类的有友元方法 3、全局方法 注意: ++a和a++的重载区别。a++的重载方法中多一个占位参数 最好不好重载&&和||。因为无
用户2929716
2018/08/23
4430
c++之函数调用运算符重载
函数调用运用()也可以重载。 由于重载后的使用方法非常像函数的调用,因此称为仿函数。 仿函数没有固定写法,非常灵活。 #include<iostream> using namespace std; class MyPrint { public: void operator()(string test) { cout << test << endl; } }; class MyAdd { public: int operator()(int num1, int num
西西嘛呦
2020/08/26
3880
【C++】运算符重载 ⑨ ( 等号 = 运算符重载 | 调用默认浅拷贝构造函数的情况分析 | 等号 = 运算符重载 与 拷贝构造函数 各自使用场景 | 等号 = 操作符重载步骤 )
C++ 编译器 为 类 提供的 默认的 拷贝操作 , 是对 成员变量 的简单拷贝 , 是 浅拷贝 ;
韩曙亮
2023/10/15
2890
【C++】运算符重载 ⑨ ( 等号 = 运算符重载 | 调用默认浅拷贝构造函数的情况分析 | 等号 = 运算符重载 与 拷贝构造函数 各自使用场景 | 等号 = 操作符重载步骤 )
PHP 中的操作符重载
操作符重载是一种语法糖,它在 C++、Python、Kotlin 等编程语言中被广泛使用。这一特性有助于我们写出更加整洁、表述力更强的代码,尤其是当我们对某些对象进行数学操作时。
桶哥
2019/06/04
1.5K0
C++赋值操作符重载
赋值操作符是一个使用频率最高的操作之一,通常情况下它的意义十分明确,就是将两个同类型的变量的值从一端(右端)传到另一端(左端)。但在以下两种情况下,需要对赋值操作符进行重载。 一是赋值号两边的表达式类型不一样,且无法进行类型转换。 二是需要进行深拷贝。
恋喵大鲤鱼
2019/02/22
5950
函数重载
10是常量所以只能被有const引用的函数调用,变量b既可以被const引用函数调用,也可以被普通引用调用,但普通引用优先级高于const引用,所以优先被普通引用调用
大忽悠爱学习
2021/03/02
5670
函数重载

相似问题

使用操作符重载调用虚拟函数

20

数组下标操作符重载

22

std::any重载[]下标操作符

12

C++:重载下标操作符

12

下标操作符重载:返回引用问题

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文