lvalue相关内容

错误:从类型'std :: vector< bool> :: reference {aka std :: _ Bit_reference}'的右值对类型'bool&'的非常量引用进行了无效的初始化

为什么会出现错误:从类型为“ std :: vector :: reference {aka std :: _ Bit_reference}”的右值对“ bool&”类型的非常量引用进行无效的初始化? vector>可见 bool& visit(int x,int y) { 返回vis [x] [y]; //错误 } 据我所知,vecto ..
发布时间:2020-09-27 03:54:10 C/C++开发

为什么预增量运算符在C中给出右值?

在C ++中,预增量运算符提供左值,因为返回的是增量对象本身,而不是副本。 但是在C中,它给出了rvalue。为什么? 解决方案 C没有引用。在C ++中, ++ i 返回对 i (左值)的引用,而在C中,它返回一个副本(递增)。 C99 6.5.3.1/2 该操作数的值prefix ++运算符递增。 结果是递增后操作数的新值。表达式++ E等于(E + = 1)。 ' ..
发布时间:2020-09-27 02:28:02 C/C++开发

将右值引用传递给常量左值引用参数

我正在尝试理解C ++ 11 rvalue引用,以及如何在我的代码中使用它们以实现最佳性能。 让我们说我们有一个 A 类,该类的成员指针指向大量动态分配的数据。 此外,方法 foo(const A& a)对类 A 的对象进行处理。 我想防止 A 被调用 > A 传递给函数 foo ,因为在这种情况下,它将执行基础堆数据的深层副本。 我测试了传递左值引用: A a; ..
发布时间:2020-09-27 02:25:04 C/C++开发

如何在C ++中以编程方式确定表达式是右值还是左值?

确定C ++中表达式是右值还是左值的最佳方法是什么?可能这在实践中没有用,但是由于我正在学习rvalues和lvalues,我认为最好有一个 is_lvalue 函数,如果在输入中传递的表达式为一个左值,否则为false。 示例: std :: string a(“ Hello” ); is_lvalue(std :: string()); // false is_lvalu ..
发布时间:2020-09-27 02:23:30 C/C++开发

数组名称不是左值是否有原因?

例如 int x[10]; int i = 0; x = &i; //error occurs! 根据 C-参考手册,数组名称不能为左值.因此,x不能为左值.但是,数组名称不能为左值的原因是什么?例如,为什么在第三行出现错误? 解决方案 您的引用不正确.数组可以是左值(但不能是可修改的左值),而“数组名"(标识符)总是 左值. 以您的示例为例: int x[10]; ..
发布时间:2020-07-17 20:54:47 其他开发

引用的地址是否总是等于原始地址?

这看起来是一个非常基本的主题,但对我来说很重要. 以下示例显示参考变量的地址等于原始变量的地址.我知道这是我们从C/C ++概念中可以期待的.但是,是否在任何情况下都能始终保证这些地址相同? #include #include #include class Point { public: double x,y; }; ..
发布时间:2020-05-28 22:23:27 C/C++开发

左值和右值的C ++运算符重载[]

我制作了一个包含整数数组的Array类.从main函数中,我试图像使用main中声明的数组那样使用[]获取Array中的数组元素.我在下面的代码中重载了运算符[];第一个函数返回一个左值,第二个函数返回一个右值(未显示构造函数和其他成员函数.) #include using namespace std; class Array { public: int& op ..
发布时间:2020-05-21 19:16:45 C/C++开发

获取一个Objective-c属性的地址(这是一个C结构)

我有一个Objective-C类,其中包含C样式的结构.我需要调用一个C函数,将一个指针传递给该对象成员(也就是属性).为了我的一生,我不知道该如何获取此C结构的地址.使用传统的&运算符获取地址,我遇到了LValue编译器错误. typedef struct _myStruct { int aNumber; }MyStruct, *pMyStruct; @interface MyCl ..

Python 2.7-用于左值修改的干净语法

具有类结构类型的类型是很常见的,这些类型类型的类型预计不会被远程拷贝持有者修改. 字符串是一个基本示例,但这是一个简单的例子,因为它是不可原谅的不可变的-Python甚至在文字字符串上允许诸如方法调用之类的事情都是不寻常的. 问题是(在大多数语言中)我们经常遇到诸如(x,y) Point类之类的东西.有时我们想独立更改x和y.即,从使用角度来看,Point LVALUE应该是可变的(即 ..
发布时间:2020-05-14 02:09:54 Python

为什么C中的复合文字可以修改

通常会将“不可修改"与字面量联系起来 char* str = "Hello World!"; *str = 'B'; // Bus Error! 但是,当使用复合文字时,我很快发现它们是完全可修改的(查看生成的机器代码,您会看到它们被压入堆栈了): char* str = (char[]){"Hello World"}; *str = 'B'; // A-Okay! 我正在 ..
发布时间:2020-05-02 10:35:02 其他开发

是否可能像python中的perl的lvalue或lisp的setf之类的东西?

轻率地说,你可以说: (setf (aref a 1) 5) 在perl中,您可以说: substr( $string, $start, $stop ) =~ s/a/b/g 在python中是否可能有类似的东西?我的意思是可以将函数结果用作左值(作为赋值操作的目标)? 解决方案 否.在编译器级别上,明确禁止分配函数调用的结果: >>> foo() = 3 F ..
发布时间:2020-05-02 04:15:07 Python