侯捷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日
    浏览(50)
  • 【Java语言面向对象】(1)面向过程编程

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

    2023年04月09日
    浏览(50)
  • 【C++】面向对象之多态

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

    2024年02月01日
    浏览(84)
  • 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日
    浏览(40)
  • 【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日
    浏览(60)
  • C++基础(一) —— 面向对象(2)

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

    2024年02月07日
    浏览(33)
  • C++ 面向对象 学习 优秀教程

    油管看视频 + 沉浸式翻译插件,实现中文字幕! https://www.youtube.com/watch?v=wN0x9eZLix4 博主:https://www.youtube.com/@CodeBeauty

    2024年02月06日
    浏览(37)
  • C++ 面向对象三大特性——继承

    ✅1主页:我的代码爱吃辣 📃2知识讲解:C++ 继承 ☂️3开发环境:Visual Studio 2022 💬4前言:面向对象三大特性的,封装,继承,多态,今天我们研究研究 C++的继承 。 目录 一.继承的概念及定义 1.继承的概念  2.继承的定义 二. 继承关系和访问限定符  三.基类和派生类对象赋

    2024年02月12日
    浏览(66)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包