侯捷C++(一、面向对象)

这篇具有很好参考价值的文章主要介绍了侯捷C++(一、面向对象)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

笔记

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
侯捷C++(一、面向对象),c++,c++,开发语言

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

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

一、作用

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

动态内存管理出现的问题

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

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

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

侯捷C++(一、面向对象),c++,c++,开发语言

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

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

P20 7 class template

类模板
侯捷C++(一、面向对象),c++,c++,开发语言

P21 8 Funtion Template

函数模板不需要<>说明类型,编译器会推断
侯捷C++(一、面向对象),c++,c++,开发语言

P22 9 Member Template

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

侯捷C++(一、面向对象),c++,c++,开发语言
侯捷C++(一、面向对象),c++,c++,开发语言
侯捷C++(一、面向对象),c++,c++,开发语言

P23 10 specialization

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

P25 12 模板模板参数

没懂

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

P27 14 三个主题

侯捷C++(一、面向对象),c++,c++,开发语言
侯捷C++(一、面向对象),c++,c++,开发语言
侯捷C++(一、面向对象),c++,c++,开发语言

P28 15 Reference

侯捷C++(一、面向对象),c++,c++,开发语言侯捷C++(一、面向对象),c++,c++,开发语言

P30 17 关于vptr和vtbl

侯捷C++(一、面向对象),c++,c++,开发语言
通过子类改写虚函数,调用虚函数名所指向的函数指针会被改变
通过指针,指针向上转型,虚函数,为动态绑定
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++(一、面向对象),c++,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-536927.html

到了这里,关于侯捷C++(一、面向对象)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • <C++> 类和对象(上)-面向对象

    C语言是 面向过程 的,关注的是过程,分析出求解问题的步骤, 通过函数调用逐步解决问题。 C++是基于 面向对象 的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函

    2024年02月11日
    浏览(53)
  • 【Java语言面向对象】(1)面向过程编程

    人机猜拳的第一版(下方是程序源码) 人机猜拳(面向过程版本) 三部分组成 初始化 游戏开始 游戏数据统计 逐步完成,并阶段测试。 面向过程整体的思路:做一件事,分为多个步骤,每个步骤之间是有序的,最后按序完成。 面向过程的优缺点: 优点:符合人类思维,简

    2023年04月09日
    浏览(54)
  • C++面向对象编程(2)

    目录 一. 问题引入 二. 右值引用 1. lvalue/rvalue/prvalue/xvalue 1.1 表达式与对象的概念 1.2 左值与右值  2. moving semantics 2.1 显示绑定 2.2 Move constructors 2.3 Move assignment operator 2.4 实例分析 // TODO Quiz REF 本章简单介绍下move语义的“来龙去脉”。 如下,先来看看拷贝赋值的一个过程。

    2024年02月10日
    浏览(42)
  • 【C++】面向对象之多态

    文章内的所有调试都是在vs2022下进行的, 部分小细节可能因编译器不同存在差异。 概念引入 对于一个火车票售票系统, 可能会有多重角色, 比如普通成人类、学生类、军人类、儿童类等等… 这些类可能都是从某个基类派生出来的, 而且每个类都有一个基本需求,就是买票

    2024年02月01日
    浏览(86)
  • 【C++面向对象】8. 继承

    继承允许我们依据一个类来定义另一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了 重用代码功能 和 提高执行时间 的效果。 当创建一个类时,我们不需要重新编写新的数据成员和成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已

    2024年02月08日
    浏览(52)
  • C++ 面向对象(2)——继承

    面向对象程序设计中最重要的一个概念是继承。继承允许我们依据另一个类来定义一个类,这使得创建和维护一个应用程序变得更容易。这样做,也达到了重用代码功能和提高执行效率的效果。 当创建一个类时,您不需要重新编写新的数据成员和成员函数,只需指定新建的类

    2024年02月10日
    浏览(45)
  • C++ 面向对象三大特性——多态

    ✅1主页:我的代码爱吃辣 📃2知识讲解:C++ 继承 ☂️3开发环境:Visual Studio 2022 💬4前言:面向对象三大特性的,封装,继承,多态,今天我们研究研究 C++的多态 。 目录 一.多态的概念 二.多态的定义及实现 1.多态的构成条件 2. 虚函数 3.虚函数的重写 4. C++11 override 和 fina

    2024年02月12日
    浏览(64)
  • C++基础(一) —— 面向对象(2)

    子类可以访问基类的public和protected 基类的private只有自己和友元才能访问(友元会破坏类的封装性) 除构造函数和析构函数 ,派生类从基类可以继承来所有的成员(变量和方法) 派生类通过 调用 基类的构造函数来初始化从基类继承来的成员变量 派生类对象构造和析构的过程:

    2024年02月07日
    浏览(36)
  • C++:面向对象大坑:菱形继承

    单继承:一个子类只有 一个直接父类 时称这个继承关系为单继承。 图示: 多继承:一个子类有 两个或以上直接父类 时称这个继承关系为多继承。 图示: 1.概念 菱形继承:菱形继承是多继承的一种特殊情况。即:一个类是另外几个类的子类,而这几个子类又是另外一个类

    2024年04月27日
    浏览(37)
  • C++基础(一) —— 面向对象(1)

    面向对象四大特性: 抽象 :抽象是一种将对象的共同特征提取出来并定义成一个通用模板的过程。类的抽象是指将一个类的共同属性和行为抽象出来,定义一个通用的类模板,而不关注具体的实现细节。 封装性 :数据和代码捆绑在一起,避免外界干扰和不确定性访问。封装

    2024年02月07日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包