C++程序设计:赋值兼容规则与基类派生类对象
需积分: 9 77 浏览量
更新于2024-08-19
收藏 8.66MB PPT 举报
"赋值兼容规则-c++程序设计谭浩强完整版"
在C++编程语言中,赋值兼容规则是一个重要的概念,它涉及到类的继承关系以及对象之间的赋值操作。赋值兼容规则规定,可以将派生类的对象赋值给基类的对象,这是因为派生类继承了基类的所有公有和保护成员。这种赋值操作称为向上转型(Upcasting),在这种情况下,只是将从基类继承来的成员赋值。例如,如果我们有如下的定义:
```cpp
class Base { /* ... */ };
class Derive : public Base { /* ... */ };
Base b;
Derive d;
b = d; // 合法的赋值操作
```
这里,`Derive`是`Base`的派生类,所以可以将`d`的值赋给`b`。这个操作并不会复制`Derive`类中额外添加的成员,因为`b`只能访问`Base`类的成员。这种赋值兼容性允许我们以基类的引用或指针处理派生类对象,这是多态性的一个基础。
然而,赋值兼容规则并不允许将基类对象赋值给派生类对象,因为派生类可能包含基类所没有的额外成员或行为。例如,下面的代码会导致编译错误:
```cpp
Base b;
Derive d;
d = b; // 不合法的赋值操作
```
这被称为向下转型(Downcasting),在C++中,它是不允许的,除非使用显式类型转换,并且要确保不会丢失数据或引发未定义行为。
C++语言发展自20世纪70年代的C语言,由Dennis Ritchie和Brian Kernighan设计,旨在为UNIX操作系统编写程序。C++在其基础上增加了面向对象特性,如类、继承、多态等,使得它更加强大和灵活。C++语言的主要特点包括:
1. 结构化编程:C++支持结构化编程,语言简洁,使用灵活,适应各种规模的项目。
2. 高级和低级特性结合:C++既有高级语言的抽象,又有汇编语言的控制力,提供了丰富的运算符和位运算。
3. 可移植性:C++程序可以在不同平台间移植,只需极少或无需修改。
4. 程序设计自由度:C++允许程序员以多种方式实现同一功能,但也意味着调试和学习曲线可能较陡峭。
C++的这些特性使得它成为软件开发中的一个强大工具,特别是在需要高效性能和复杂数据结构的应用中。然而,对于初学者来说,理解和掌握C++的严谨性、模板、异常处理等特性可能需要更多时间和实践。
2012-10-18 上传
2014-12-21 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
eo
- 粉丝: 34
- 资源: 2万+
最新资源
- star-wars-service
- 多LED显示模块-项目开发
- Msc_thesis
- 小刀娱乐网源码(带手机版) v3.73
- dotfiles:点文件和安装脚本,便于设置
- OBLOG 秋
- Stock_vis:股票可视化和比较
- mCerebrum-AutoSenseBLE
- 恢复
- Starter-Next.js:Next.js +打字稿+ Tailwindcss
- CMS Made Simple(CMSMS) v2.2.1
- 数据-行业数据-26、酒店装饰工程预算表建筑施工模板.rar
- DeepRain:使用 UNet 进行短期降水预测
- 商业公共建筑模型
- CSE391Object-orientedProgramming:国立中山大学2020年秋季CSE391面向对象程序设计
- Amazon-Review:使用情感分析在Amazon Review数据中构建机器学习模型