示例代码:
MyItemType a;
MyItemType b;
a.someNumber = 5;
b = a;
cout << a.someNumber << endl;
cout << b.someNumber << endl;
b.someNumber = 10;
cout << a.someNumber << endl;
cout << b.someNumber << endl;
输出:
5
5
5
10
如果 a 和 b 是引用类型,我猜最后两行应该是 10 和 10 而不是 5 和 10。
这是否意味着当你做这样的声明时:
AClassType anInstance;
它被当作值类型对待?
------这里是MyItemType.h------------
#ifndef MYITEMTYPE_H
#define MYITEMTYPE_H
class MyItemType{
public:
int someNumber;
MyItemType();
};
MyItemType::MyItemType(){
}
#endif /* MYITEMTYPE_H */
最佳答案
基本上是的(如果您认为 C++ 等同于 Java 中的意思)。
AClassType anInstance;
是对象,不是引用。 MyItemType a
和
MyItemType b
是不同的对象,它们驻留在不同的内存空间中,因此显然更改一个不会影响另一个。
当您执行 a=b
时,您不引用一个对象与另一个对象,但在这种情况下,进行成员赋值。基本上就像在说
a.someNumber = b.someNumber;
关于c++ - 如果在没有 new 运算符的情况下初始化,C++ 是否将类对象视为值类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13633824/