设为首页收藏本站 |天气与日历| 2025-07-02 星期三 01:42:00 乙巳(蛇)年 六月初八 丑时
     
切换到窄版

私人站点

 找回密码
 立即注册
搜索
查看: 148|回复: 0

C++的一些语法特性.五

[复制链接]

954

主题

954

帖子

3879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3879
发表于 2022-1-11 14:10:44 | 显示全部楼层 |阅读模式
[C] 纯文本查看 复制代码
01-课程回顾.avi
02-强化训练-数组类封装.avi
03-加号运算符重载.avi
04-左移运算符重载.avi
05-前置后置递增运算符重载.avi
06-指针运算符重载.avi
07-赋值运算符重载.avi
08-[]运算符重载.avi

1 强化训练-数组类封装
1.1 设计类 myArray
1.2 属性
1.2.1 int m_Capacity数组容量
1.2.2 int m_Size   数组大小
1.2.3 int pAddress 维护真实在堆区创建的数组指针
1.3 行为
1.3.1 默认构造
1.3.2 有参构造
1.3.3 拷贝构造
1.3.4 析构
1.3.5 根据位置 设置数据
1.3.6 根据位置  获取数据
1.3.7 尾插
1.3.8 获取数组容量
1.3.9 获取数组大小
2 加号运算符重载
2.1 对于内置的数据类型,编译器知道如何进行运算
2.2 但是对于自定义数据类型,编译器不知道如何运算
2.3 利用运算符重载 可以让符号有新的含义
2.4 利用加号重载  实现p1 + p2 Person数据类型相加操作
2.5 利用成员函数    全局函数 都可以实现重载
2.6 关键字 operator +
2.7 成员本质  p1.operator+(p2)
2.8 全局本质  operator+(p1,p2)
2.9 简化   p1 + p2
2.10 运算符重载 也可以发生函数重载
3 左移运算符重载
3.1 不要滥用运算符重载,除非有需求
3.2 不能对内置数据类型进行重载
3.3 对于自定义数据类型,不可以直接用 cout << 输出
3.4 需要重载 左移运算符  
3.5 如果利用成员 函数重载 ,无法实现让cout 在左侧,因此不用成员重载
3.6 利用全局函数 实现左移运算符重载
3.6.1 ostream& operator<<(ostream &cout, Person & p1)
3.7 如果想访问类中私有内存,可以配置友元实现
4 递增运算符重载
4.1 前置递增
4.1.1  MyInter& operator++()
4.2 后置递增
4.2.1 MyInter operator++(int)
4.3 前置++ 效率高于 后置++ 效率 ,因为后置++会调用拷贝构造,创建新的数据
5 指针运算符重载
5.1 智能指针
5.2 用途: 托管new出来的对象的释放
5.3 设计smartPoint智能指针类,内部维护 Person * ,在析构时候释放堆区new出来的person对象
5.4 重载  ->   * 让  sp智能指针用起来向真正的指针
6 赋值运算符重载
6.1 编译器会默认个一个类添加4个函数
6.1.1 默认构造、析构   拷贝构造(值拷贝)   operator=(值拷贝)
6.2 如果类中有属性创建在堆区,利用编译器提供的 = 赋值运算就会出现 堆区内存重复释放的问题
6.3 解决方案:利用深拷贝  重载 =运算符
6.4         Person& operator=( const Person &p)
7 []运算符重载
7.1         int& operator[](int index);
7.2 实现访问数组时候利用[] 访问元素
8

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|编程站点 ( 冀ICP备2023028127号-2 )|友链申请|

GMT+8, 2025-7-2 01:42 , Processed in 0.093845 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表