C++的赋值兼容规则

赋值兼容规则中所指的替代包括以下情况:

(1)派生类对象可以赋值给基类对象

(2)派生类对象可以初始化基类的引用

(3) 派生类对象的地址可以赋值给指向基类的指针

在替代之后,派生类对象可以作为基类对象使用,但是只能使用从基类继承来的成员。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C++赋值构造函数是一个特殊的构造函数,它用于在对象已经被创建后再次给对象赋值赋值构造函数的定义如下: ```c++ class ClassName { public: ClassName(); // 默认构造函数 ClassName(const ClassName& obj); // 拷贝构造函数 ClassName& operator=(const ClassName& obj); // 赋值构造函数 }; ``` 赋值构造函数的参数是一个常引用,表示要赋值的对象。它的返回值是一个引用,表示返回被赋值后的对象本身。 赋值构造函数的作用是当一个已经存在的对象需要被赋值时,可以使用赋值构造函数来完成赋值赋值构造函数在以下情况会被调用: 1. 使用一个对象初始化另一个对象。 2. 将一个对象作为实参传递给函数,函数的形参是该对象的引用。 3. 从函数返回一个对象,函数的返回值是该对象的引用。 下面是一个简单的例子,演示了如何使用赋值构造函数: ```c++ #include <iostream> using namespace std; class MyClass { public: int x; MyClass() { cout << "默认构造函数被调用" << endl; } MyClass(const MyClass& obj) { x = obj.x; cout << "拷贝构造函数被调用" << endl; } MyClass& operator=(const MyClass& obj) { x = obj.x; cout << "赋值构造函数被调用" << endl; return *this; } }; int main() { MyClass obj1; obj1.x = 10; MyClass obj2 = obj1; // 使用对象初始化另一个对象 cout << "obj2.x = " << obj2.x << endl; MyClass obj3; obj3 = obj1; // 赋值操作 cout << "obj3.x = " << obj3.x << endl; return 0; } ``` 输出结果为: ``` 默认构造函数被调用 拷贝构造函数被调用 obj2.x = 10 默认构造函数被调用 赋值构造函数被调用 obj3.x = 10 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值