c++中两个类能否用等号赋值
时间: 2024-03-28 09:41:51 浏览: 20
在 C++ 中,两个类的实例可以使用等号进行赋值,这被称为对象的赋值操作。对象的赋值操作会将一个对象的值复制到另一个对象中,使它们的状态相同。C++ 默认提供的对象赋值操作是浅拷贝,即只复制对象中的成员变量,不复制动态分配的资源(比如堆上的内存)。
例如,假设有一个名为 `Person` 的类,它有两个成员变量 `name` 和 `age`,则可以使用如下方式进行对象的赋值操作:
```c++
#include <iostream>
#include <string>
class Person {
public:
std::string name;
int age;
Person(std::string name, int age) : name(name), age(age) {}
};
int main() {
Person p1("Alice", 20);
Person p2 = p1; // 对象的赋值操作
std::cout << "p1: name=" << p1.name << " age=" << p1.age << std::endl;
std::cout << "p2: name=" << p2.name << " age=" << p2.age << std::endl;
return 0;
}
```
输出结果:
```
p1: name=Alice age=20
p2: name=Alice age=20
```
需要注意的是,如果类中存在动态分配的资源,例如使用 new 进行的内存分配,需要在类中自定义复制构造函数和析构函数,以保证对象的赋值操作正确地处理动态分配的资源。