注册 登录
编程论坛 C++教室

关于对对象的赋值问题(不懂啊,望高手详解!)

ltf119 发布于 2010-06-30 20:25, 627 次点击
例如:
…………
class po
{
  private:
  Bstudent *p;       \\ Bstudent为先定义的类
  public:
 …………
};

void main()
{ po P;
  Bstudent C1(20,20);
  P=&C1;              \\ 什么意思,这样也可以吗(书上是讲可以的)?望高手详解,谢谢!
  …………
}
2 回复
#2
debroa7232010-06-30 21:27
要想让等式成立,就得为po类添加对类Bstudent类的=符号的重载函数。否则P=&C1;是编译不过的。
我想书上的意思是想说明类的结构,对于po类的实例,它的内存结构(如果没有虚函数的话)的第一个地址应该就是它的成员p的,这个例子可能是想把一个Bstudent实例对象的地址赋值给这个成员指针:
*((Bstudent**)(&P)) = &C1;
这样可以做到。如果从内存上去看,这个会比较好理解。
#3
不归鹄2010-07-01 09:31
我觉得是把对象 C1 的地址赋给对象 P 中的指针 p , 因为 po 类中的 p 为 Bstudent 类型的指针。这可以通过 po 类的构造函数来进行类型转换的,也就是说 po 中应该有一个带默认参数的构造函数,参数类型为 Bstudent * 。
1