除了使用表达式之外,我可以使用C ++访问对象吗?
根据C ++ 03 3.10 / 1,每个表达式都是左值或右值。 当我使用=
为变量分配一个新值时,赋值左侧的变量名称是一个左值表达式。 它看起来像我试图做的一个变量,它仍然会使用一些表达式。
除了使用表达式之外,还有什么方法可以在C ++中操作变量吗?
唯一的方法是通过一个声明,而不是通过这种声明的一部分的表达。 一个例子是一个定义, std::string x;
。 这将调用x
上的默认ctor。 但这是否会算作是对你的操纵?
其实没有那么多其他的陈述。 除了通过循环控制表达式的副作用之外,循环控制语句不能改变对象本身。 goto
, break
and continue
根本无法做到。 throw
是一个表达式, catch()
不能改变任何东西,所以这个对也是不相关的。 我不认为有任何其他非表达声明。
您可以在不使用表达式的情况下设置变量的值,但是您无法真正选择它获得的值。 我阅读C ++ 11标准附录A(语言语法)的方式, 声明不是表达式。 如果你写int a;
在函数范围内, a
将被分配一个不确定的值。 如果你将它写在文件范围内, a
将被赋值为0.但是你不能为它赋值或传递构造函数参数,因为这样做涉及表达式。
不确定它是否严格回答您的问题,但您可以间接操作变量。 例如:
int a;
int *pA = &a;
*pA = 5;
这里的值a
被改变,但没有涉及到任何表达a
。 该表达式只涉及pA
。
除此之外,不相关的操作可能会产生副作用,导致不同的更改,无论是有意还是无意(例如无意中更改某些变量的内存损坏)。
链接地址: http://www.djcxy.com/p/66961.html上一篇: Can I access an object in C++ other than using an expression?