在3.10/10,标准说:
为了修改对象,对象的左值是必要的,除了在某些情况下也可以使用类类型的右值来修改它的指示对象.[示例:调用对象(9.3)的成员函数可以修改对象.]
因此,除非在某些情况下,否则rvalues是不可修改的.我们被告知调用成员函数是其中一个例外.这给出了除了调用成员函数之外还有修改对象的方法的想法.我想不出办法.
如何在不调用成员函数的情况下修改对象?
我可以想到一种方法:
如果您的类公开公共成员变量,您可以直接分配给这些成员变量。例如:
class A
{
public:
int _my_var;
...
};
int main(int argc, char** argv)
{
A *a = new C();
a->_my_var = 10;
}
Run Code Online (Sandbox Code Playgroud)
但这不是一种好的编程风格——我不会提倡甚至建议将成员变量公开为公共变量。
另外,如果你可以做一些非常奇怪的事情,例如直接在内存中写入一些地址,从指针到类对象的偏移量 - 但你为什么要这样做呢?
归档时间: |
|
查看次数: |
4434 次 |
最近记录: |