1
10
为什么
现在,因为有一个成员运算符
我在你的代码中看到你实际上有一个
|
2
5
第一个问题是由奇怪和狡猾的C++语言规则引起的:
发生什么事了?
我不知道为什么iostreams库的设计者决定
我不知道为什么会出现第二个问题。您在不同的编译器中得到相同的行为吗?它可能是编译器或C++标准库Bug,但我会把它作为最后的借口——至少看看你是否能用正则表达式复制行为。
|
3
1
问题是您使用的是临时流对象。将代码更改为以下代码,它将起作用:
基本上,编译器拒绝将临时引用绑定到非常量引用。 关于第二点,关于当您有一个“const char*”对象时它为什么绑定,我认为这是VC编译器中的一个bug。但是,我不能肯定地说,当您只有字符串文本时,会有一个到“void*”的转换,以及一个到“const char*”的转换。如果您有“const char*”对象,那么第二个参数就不需要转换——这可能是vc的非标准行为允许非const-ref绑定的触发器。 我认为8.5.3/5是涵盖这一点的标准部分。 |
4
0
我不确定您的代码是否应该编译。我想:
应该是:
事实上,更多地看代码,我相信您所有的问题都归结为常量。以下代码按预期工作:
|
5
0
您可以使用像下面这样的重载:
作为额外的奖励,您现在知道n是数组的长度。 |
Noah Wilder · Swift中元组的操作符重载 6 年前 |
Salman · 指向具有数组索引运算符重载的类的指针 6 年前 |
Nom OnTheCookie · 使用向量重载C++输出 6 年前 |
J. Doe · C++重载:从友元函数切换到成员函数 6 年前 |
Ana · 使用操作符重载添加存储在vector中的类对象 6 年前 |
Matthew · 重载运算符|用于固定大小的阵列? 6 年前 |
Martin Žid · 重载运算符+=具有两个类 6 年前 |