笔记

P16 3 non explicit one

class Fraction{public:Fraction(int num, int den=1):m_numerator(num), m_denominator(den){}Fraction operator + (const Fraction& F){return Fraction(...);}
private:int m_numerator;int m_denominator;
}

使用

Fraction a = f + 4;

同类型相加,Fraction类会使用析构函数将4类型转换
给析构函数加上 explicit

 explicit Fraction(int num, int den=1):m_numerator(num), m_denominator(den){}

表示明确的析构函数,即此函数只进行析构操作(不会被编译器用作他处,如转换)

P17 4 pointer like classes

一、pointer-like classes, 关于智能指针

https://www.cnblogs.com/-citywall123/p/12694761.html

指针指针的使用效率不会比一般的指针高,但是它胜在更安全、更稳定,因为指针存放在类中,不通过类无法操作,通过类操作只能使用类中提供的函数。

智能指针作用可以解决动态内存管理问题

一、作用

动态内存管理问题:
new:再动态内存中分配一块空间并返回一块指针
delete:指向动态独享的指针,销毁对象,并释放与之关联空间

动态内存管理出现的问题

  1. 用完没释放,内存泄漏
  2. 没用完就释放,出现非法内存的指针
  3. 用完后多次释放,程序警告,或报错,或崩溃

智能指针的作用就是解决上述三种可能出现的问题,指针指针的使用效率不会比一般的指针高,但是它胜在更安全、更稳定

二、pointer-like classes,关于迭代器

利用模板类对一般的指针进行封装,节点结构体有三个成员:前指针,后指针,本身的数据。
多个节点用前后指针串联起来,模板类封装起来(写访问前后的节点的函数、操作符访问数据函数,++、–、等等)

上述操作和对普通指针没什么区别,为什么叫智能?因为他封装了指针,不会被其他程序随意更改指针,想改指针,只能通过此模板类更改,更改方式更是限制操作,只能使用模板类中的函数,尽最大可能减少对指针操作所造成的程序崩溃。智能指针比普通指针使用效率不会更高,但更安全,更稳定,

P20 7 class template

类模板

P21 8 Funtion Template

函数模板不需要<>说明类型,编译器会推断

P22 9 Member Template

模板里面套模板
外面模板用<>标出,里面模板推断出



P23 10 specialization

特化,针对不同类型同种名字进行分别函数输出
https://blog.csdn.net/weixin_43744293/article/details/123919688

P25 12 模板模板参数

没懂

template<typename T, template <typename T> class Container>

P27 14 三个主题



P28 15 Reference

P30 17 关于vptr和vtbl


通过子类改写虚函数,调用虚函数名所指向的函数指针会被改变
通过指针,指针向上转型,虚函数,为动态绑定
A、B、C各有自己的虚表
A有vfunc1、vfunc2两个虚函数,则虚表中有两个指向函数的指针
B是之类,继承父类A的虚函数,B覆写了vfunc1函数,所以B的虚表有自己vfunc1函数的指针和继承父类的vfunc2的指针
C是之类,继承父类B的虚函数,C覆写了vfunc1函数,所以C的虚表有自己vfunc1函数的指针和继承父类的vfunc2的指针

三个虚表共有4个虚函数,虚函数的调用:通过各自类的虚指针,跳到虚表,根据函数名在虚表中查找函数

P36 22 示例 new和delete

侯捷C++(一、面向对象)相关推荐

  1. 侯捷老师-02面向对象高级编程

    侯捷老师-02面向对象高级编程 1.Static使用 Static本质 Static使用 Static使用举例-单例模式 Static使用举例-单例模式(改进) 2.模板使用 Class Templa ...

  2. 侯捷老师-01面向对象高级编程

    侯捷老师-01面向对象高级编程 01面向对象高级编程 1.编程习惯 总结 2.三大函数 2.1 拷贝构造函数.拷贝赋值函数.析构函数(带有指针的类) 2.2 构造函数.析构函数 局部变量.全局变量 3 ...

  3. 侯捷老师 c++面向对象编程(上)

    (本博客是笔者根据侯捷老师的课程进行的总结,便于自己复习,也分享于网上,便于和更多人学习交流,若有侵权,请告删,若有误,请不吝赐教)(图来自于pdf文档,需要的朋友可以在评论区留言) 主要分为两章: ...

  4. 【C++】侯捷:C++面向对象高级编程(上)

    C++面向对象高级编程(上) 文章目录 C++面向对象高级编程(上) 一.学习目标 1.1 关于C++ 1.1.1 C++的历史 1.1.2 C++演化 1.1.3 C vs C++ 二. C++类的 ...

  5. 【侯捷】C++面向对象高级编程(上)

    一.C++编程简介 1.1 目标 培养正规的.大气的编程习惯 以良好的方式编写C++ class [Object Based(基于对象)] class without pointer members ...

  6. 【C++】侯捷:C++面向对象笔记02-不带指针的类:complex

    不带指针的类:Complex类设计规范 C++ programs代码的基本内容 基本组成 一个完整的C++程序一般包括声明部分(.h文件)+程序部分(.cpp文件)以及标准库部分. 自己写的头文件用双 ...

  7. 一、C++面向对象高级编程(上) (侯捷)

    侯捷 C++八部曲笔记汇总 - - - 持续更新 ! ! ! 一.C++ 面向对象高级开发 1.C++面向对象高级编程(上) 2.C++面向对象高级编程(下) 二.STL 标准库和泛型编程 1.分配器 ...

  8. 侯捷面向对象高级编程(二)

    侯捷面向对象高级编程(二) 转换函数 转换函数没有返回值,返回值就是double即函数名,不需要自己写 因为转换函数一般不会改变其中内容,所以要加const限定 两条路都可以走,就回产生歧义,报错 e ...

  9. 侯捷-C++面向对象高级开发(操作符重载与临时对象)

    侯捷-C++面向对象高级开发(操作符重载与临时对象) 1.操作符重载与临时对象 任何成员函数有一个隐藏的this pointer指向,指向调用者. 传递者无需知道接收者是以什么形式接收 就比如下面方框 ...

  10. 侯捷C++学习记录-面向对象高级编程上

    目标: 培养正规的.大气的编程习惯 以良好的方式编写C++ class [Object Based(基于对象)] 学习Classes 之间的关系 [Object Oriented(面向对象)] 继承( ...

最新文章

  1. DNSBIND——DNS的子域授权和定义转发服务器
  2. Attribute在拦截机制上的应用
  3. 使用ajax和history.pushState无刷新改变页面URL
  4. SQL Server中的char,nchar,varchar和nvarchar有什么区别?
  5. 3D图形图像处理软件HOOPS介绍及下载
  6. 【干货】移动互联网时代的零售店面转型之道
  7. 知识表示与知识图谱--介绍
  8. linux内核启动流程x86,linux内核-x86_32位内核启动流程
  9. python作业表达式求值_用Python3实现表达式求值
  10. 『PyTorch』第十五弹_torch.nn.Module的属性设置查询
  11. Leetcode-5063 Last Stone Weight(最后一块石头的重量)
  12. ROS教程之使用UVC摄像头
  13. python因子分析_python中的因子分析简介
  14. 服务器上网站被劫持,网站被劫持怎么办,网页被劫持快速解决办法
  15. 1、大道至简的数据处理工具-(Microsoft Power Query入门)
  16. b460m迫击炮黑苹果_现阶段最便宜的完美黑苹果配置
  17. 【01】从零开始跟我一起制作一个鸿蒙的应用-★注册开发者和准备工具★---优雅草科技伊凡
  18. 我奋斗18年,和你或者咖啡没有任何关系
  19. 简单BroadcastRecevier
  20. 【芝士】%ff%ff%ff%ff%ff%ff%ff || 0xff0xff0xff0xff0xff0xff0xff 异或,~ 取反过rce 自己应该是弄明白了,

热门文章

  1. 快递查询API(最新)
  2. 1400:统计单词数
  3. 【CloudXNS教您几招】如何让多ip域名配置游刃有余?(3)
  4. 汽车数字钥匙设计03:UWB测距原理
  5. 阿里云国际站怎么支付
  6. 阿里云ossutil使用
  7. 杭州计算机高中分数线,2019年杭州市区高中第一批录取分数线公布!
  8. hive url编码解码
  9. 查看,打开sqlite db文件
  10. 近期白银期货技术分析!