21xrx.com
2024-11-10 00:38:14 Sunday
登录
文章检索 我的文章 写文章
C++ 派生类赋值问题
2023-06-28 18:30:44 深夜i     --     --
C++ 派生类 赋值问题

在C++编程中,派生类从基类继承了所有属性和方法。当派生类对象复制或赋值给另一个对象时,需要特别注意。因为派生类对象包括了基类对象的属性和方法,当使用赋值运算符(=)或者复制构造函数时,需要考虑到基类部分。

在派生类的赋值中,基类对象的赋值方式可以使用派生类对象直接进行赋值,或者使用基类对象进行赋值。但如果使用派生类对象进行基类对象赋值,只会发生浅拷贝,基类对象的地址值保持不变,因此需要使用基类对象进行赋值。

例如:


class Base

public:

  int num;

;

class Derived : public Base

public:

  int derivedNum;

;

int main()

  Derived d1;

  d1.num = 10;

  d1.derivedNum = 20;

  //浅拷贝

  Base b1 = d1; 

  Base b2;

  b2 = d1; //深拷贝

  return 0;

在上述代码中,基类Base拥有num属性,派生类Derived拥有derivedNum属性。在主函数中,使用派生类对象d1进行赋值。在浅拷贝中,将d1赋值给基类对象b1,只会赋值num属性,derivedNum属性会被忽略。在深拷贝中,使用基类对象进行赋值,b2会被完整复制。

因此,在派生类的赋值中,需要仔细考虑基类部分的赋值方式。如果使用派生类对象进行赋值,只会复制基类对象的部分属性和方法,而不会对基类对象进行完整复制。而使用基类对象进行赋值,则会对整个对象进行完整复制。因此,需要根据实际需求进行选择。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复