同类型的“类”可以直接相互赋值么?(C++)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同类型的“类”可以直接相互赋值么?(C++)相关的知识,希望对你有一定的参考价值。

参考技术A 可以!因为C++里有拷贝构造函数,通过拷贝构造函数实现对象相互赋值。
如:

#include <iostream.h>

class student

public:
student()
student(int n)name = n;
student(student & stu) //拷贝构造函数,没写时系统自动分配
void display()cout<<name<<endl;
private:
int name;
;

void main()

student s1(10),s3;
s3 = s1;
s3.display();
本回答被提问者采纳
参考技术B 最好重载=操作 参考技术C 可以.
你也可以上机试试
参考技术D 不行

赋值兼容原则

在C++中,无论哪种继承方式下派生类都会把父类所有的数据继承,区别在于是否能访问
赋值兼容规则如下:
1.可以直接用派生类对象给基类对象赋值
2.可以直接用派生类对象的地址给基类指针赋值
3.可以使用派生类对象为基类的引用直接进行初始化
但该原则不能反向运行,愿意如下:
实例化一个类型时要调动构造方法,而子类在构造前要先构造父类对象,编译器提前开辟出子类加父类总大小的空间。父类成员构造完成后先放入,再把子类成员构造出来加在后面,而继承则是把所有成员放在一起构成子类对象。子类可以给父类赋值是因为子类成员包括了父类成员,赋值时只是用到了和父类相同的空间(称之为对象切片),父类需要什么成员,子类都可以一一提供。而反过来父类做不到提供子类需要的所有的成员。

以上是关于同类型的“类”可以直接相互赋值么?(C++)的主要内容,如果未能解决你的问题,请参考以下文章

C语言中两个相同类型的结构体变量之间是可以相互直接赋值的

在C语言中。结构体变量之间可以相互赋值吗?

当对象的引用作为参数时,可以直接打点访问该对象的私有成员(c++)

<继承问题>可以把基类对象赋值给子类对象么?

CString之间为啥不能互相赋值

2维数组可以直接赋值么?