自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Hundreays

MachineLearning/ComputerVision

  • 博客(21)
  • 收藏
  • 关注

原创 C++面向对象:友元函数和友元类

C++学习笔记:友元函数和友元类1.友元函数1.1 外部函数访问类内成员1.2 友元函数的引入1.3 友元函数总结2.友元函数的另一种实现3.友元类3.1 友元类的概念和使用3.2 互为友元类3.3 友元类总结4.为什么会有友元函数4.1 使用友元函数的优缺点4.2 使用友元函数的两种情况4.3 运算符重载中使用友元回顾4.4 两个类如何共享数据4.5 友元函数和类的成员函数的区别4.6 共有友元函数1.友元函数1.1 外部函数访问类内成员class person{public: string

2021-01-31 11:26:47 361

原创 C++面向对象:静态成员和静态类

C++学习笔记:静态成员和静态类1.类的静态成员1.1 static关键字1.2 什么是静态成员1.3 静态成员的特征和实践验证2.静态成员的深度理解2.1静态数据成员的使用2.2 静态成员和普通成员的互相调用规则2.3 从内存角度来看静态成员3.静态成员的用途3.1 用途举例3.2 静态成员与面向对象4.静态类的概念4.1 什么是静态类4.2 静态类的优势4.3 C++不支持静态类1.类的静态成员1.1 static关键字static关键字在C语言中有2种用法:static修饰局部变量和全局变量,这

2021-01-29 19:49:46 4981 1

原创 C++学习笔记:运算符重载

C++学习笔记:运算符重载1.运算符重载引入1.1 从函数重载说起1.2 什么是运算符重载1.3 运算符重载示例2.深度理解运算符重载2.1 运算符重载的本质2.2 运算符重载的意义1.运算符重载引入1.1 从函数重载说起函数重载是在一定作用域内,多个相同名称但不同参数列表的函数重载。编译时由编译器根据实际调用时给的实参情况来判定本次实际用哪个函数,这个过程叫重载决策。重载函数本质上就是多个独立函数,重载机制在编译时发生,运行时不参与。函数重载的意义就是避免我们给函数胡乱起名,方便编写类库覆盖所有可

2021-01-29 12:44:58 363

原创 C++面向对象的多态特性:多态和虚函数

C++学习笔记:多态和虚函数1.什么是多态2.虚函数3.多态中的override4.纯虚函数与抽象类4.1 纯虚函数4.2 抽象类(abstract type)4.3 接口(interface)5.虚析构函数5.1 什么是虚析构函数5.2 为什么需要虚析构函数1.什么是多态案例:父类animal,2个子类dog和cat,实现run()方法。class animal{public: void run(void) { cout<<"animal run()."<<e

2021-01-28 19:39:02 249 1

原创 C++面向对象的继承特性:多继承二义性问题、虚继承

C++学习笔记:多继承及其二义性问题1.多继承2.多继承的二义性问题情况13.多继承的二义性问题情况24.多继承的二义性问题情况总结5.虚继承解决菱形继承的二义性问题5.1 虚继承怎么用5.2 虚继承的实现原理1.多继承多继承就是一个子类有多个父类。在继承中,子类会继承父类的成员变量和成员函数:class A {public: int a; void print(void){cout<<"a = "<<this->a<<endl;}};cl

2021-01-28 18:24:39 485

原创 C++面向对象的继承特性:父类和子类的类型兼容规则

C++学习笔记:子类和父类的类型兼容规则1.何为类型兼容规则2.类型兼容规则的常见情况3.总结1.何为类型兼容规则类型兼容规则是父类和子类在数据类型方面的兼容规则。C和C++都是强类型语言,任何变量和对象、指针、引用等都有它自己的类型,编译器根据类型来确定很多事的。除了类型要匹配,还需要兼容。比如int和short、char就是兼容的,它们对内存里二进制数据的解读方式是一样的,而int和float,尽管它们都是占4个字节,但是它们对于内存中二进制数据的解读方式是完全不一样的,所以它们完全不兼容。派生类

2021-01-26 20:15:19 635

原创 C++面向对象的继承特性:派生类和基类的同名成员问题

C++学习笔记:派生类和基类的同名成员问题1.派生类中再实现一个基类中的方法会怎样2.派生类中如何访问被隐藏的基类方法3.注意和总结1.派生类中再实现一个基类中的方法会怎样派生类和基类中各自实现一个内容不同但函数原型完全相同的方法会怎么样?代码实验:#include<iostream>using namespace std;class person{public: string name; int age; void info(void) { cout<&

2021-01-26 19:39:40 520 2

原创 C++面向对象的继承特性:派生类和基类的构造析构关系

C++学习笔记:派生类和基类的构造析构关系1.派生类和基类的构造析构关系2.为什么派生类的构造(析构)必须调用基类的某个构造(析构)3.其他几个细节1.派生类和基类的构造析构关系派生类并不继承基类的构造和析构函数,只继承成员变量和普通成员方法。不继承意思是派生类中确实不包含基类的构造和析构函数,派生类自己有自己的构造和析构,规则和之前讲过的完全一样。研究构造和析构函数时,一定要注意默认规则。派生类的构造函数一定会调用基类的某一个构造函数,析构也一样。派生类的任意构造函数可以显式指定调用基类的任意一个构

2021-01-26 16:04:49 1616

原创 C++面向对象的继承特性:继承特性和其中的权限管控

C++学习笔记:面向对象的继承特性1.什么是继承2.类的继承案例3.类继承中的权限管控3.1 C++类中的访问权限管控回顾3.2 类继承时的三种权限设置对派生类的影响4.继承体系下子类和父类的关系4.1 子类和父类本质上是2个独立的类4.2 站在子类角度看继承4.3 为什么父类private成员在子类中还有4.4 为什么父类private成员在子类中还有但不能直接访问1.什么是继承继承是C++源生支持的一种语法特性,是C++面向对象的一种支持表现。派生类会“继承”基类的成员变量和成员方法。继承特性可以让

2021-01-26 12:54:18 295

原创 C++面向对象的封装特性:常函数const和mutable

C++学习笔记:const和mutable1.const可以实现常函数2.C++为什么设计常函数3.mutable可以局部打破const常函数1.const可以实现常函数所谓的常函数,就是class的成员函数承诺在函数内部不会修改class的任何成员变量(注意是任何一个)。实现语法是在函数名后面加上const,举个栗子:#include<iostream>using namespace;class person{public: person(int Age):age(Ag

2021-01-26 10:20:38 174

原创 C++面向对象的封装特性:访问权限问题

C++学习笔记:访问权限问题1.访问权限基本用法1.1 public访问权限是全局的1.2 private访问权限1.3 更多关于访问权限问题的问题2.C++为什么要设计访问权限2.1 访问权限作用①:保护内部资源2.2 访问权限作用②:隐藏外部使用时无需关心的内部细节2.3 访问权限作用③:其实这就是面向对象的封装特性3.访问权限带来的一些新编程理念3.1 只读变量和只写变量3.2 为什么C语言不需要这些1.访问权限基本用法1.1 public访问权限是全局的①public的成员变量,在类的成员方法

2021-01-25 17:33:25 294 1

原创 C++内存管理:拷贝构造函数、深拷贝与浅拷贝

C++学习笔记:拷贝构造函数、深拷贝与浅拷贝1.拷贝构造函数的引入1.1 用对象来初始化对象1.2 为什么可以1.3 什么是拷贝构造函数2.浅拷贝与深拷贝2.1 浅拷贝的缺陷2.2 如何解决这个问题1.拷贝构造函数的引入1.1 用对象来初始化对象简单变量定义时,可以直接初始化,也可以用另一个同类型变量来初始化。举个栗子://直接初始化,定义的时候直接给定一个初始值int a = 4; //间接初始化,用另一个同类型的变量来初始化int x=5;int y=x; 用class来定义对象

2021-01-25 10:28:57 583

原创 C++面向对象的封装特性:构造函数和析构函数

C++学习笔记:构造函数和析构函数1.一个基础的C++面向对象编程2.构造函数和析构函数2.1 什么是构造函数2.2 构造函数和析构函数一般用法2.3 为什么需要构造函数和析构函数2.4 在构造和析构函数中使用动态内存1.一个基础的C++面向对象编程一般一个.cpp和一个.hpp文件配对来描述一个class,class的名字和文件名相同的。①在头文件person.hpp:中定义类:#ifndef __PERSON_HPP__#define __PERSON_HPP__#include&lt

2021-01-25 10:28:26 450

原创 C++面向对象:面向对象思想引入

C++学习笔记:面向对象1.从高处看面向对象2.模拟单片机流水灯2.1 用C语言常规方法实现2.2 用C语言面向对象方法实现2.3 用C++面向对象方式实现,对比第二步,再理解2.4 逐一详解面向对象的各特征,并且用C++来实例讲解实现1.从高处看面向对象面向对象是一种编程思想,它并不是C++特有的,所有编程语言(比如汇编,C等)都可以实现面向对象。面向对象语言就是设计语言特性时充分考虑并且原生支持面向对象特征的那些编程语言(例如Python,Java等),非面向对象语言没有原生支持面向对象,但是可以

2021-01-23 09:02:55 419

原创 大端模式与小端模式

1.大小端模式的概念大端模式(big endian)和小端模式(little endian)最早是小说格列佛游记中出现的词和计算机本来没关系的。后来计算机通信发展起来后,遇到一个问题就是:在串口等串行通信中,一次只能发送1个字节。这时候如果要发送一个int类型的数就会遇到一个问题,int类型的4个字节是按照:byte0、byte1、 byte2、 byte3这样的顺序发送,还是按照byte3 、byte2 、byte1、 byte0这样的顺序发送。规则就是发送方和接收方必须按照同样的字节顺序来通信,否则

2021-01-20 19:09:14 1129 3

原创 C语言中的自定义类型:union共用体

C++学习笔记:union共用体1.共用体的使用2.关于数据类型的理解3.共用体的主要用途4.C++中的共用体1.共用体的使用共用体union和结构体struct在类型定义、变量定义、使用方法上很相似。举个栗子:#include<stdio.h>struct my_struct{ //定义一个结构体 int a;char b;};union my_union{ //定义一个共同体 int a;char b;};int main(int argc,char**argv){

2021-01-20 19:08:37 388

原创 结构体内存对齐

C++学习笔记:结构体内存对齐1.什么是结构体内存对齐2.结构体为何要对齐访问3.结构体对齐的规则和运算4.#pragma pack(n)对齐指令5.__attribute__()对齐指令1.什么是结构体内存对齐来看这样一种现象:#include<stdio.h>#include<stdlib.h>typedef struct student{ //定义结构体类型 char a; int age;}stu;//stu是新的类型名 而不是一个变量int main(

2021-01-19 11:36:29 1215

原创 C语言中的自定义类型:struct结构体

C++学习笔记:struct结构体1.结构体概述2.结构体的定义和使用3.从数组到结构体的进步之处4.结构体变量中的元素访问1.结构体概述C++语言中的2种类型:原生类型(如int、char等)和自定义类型(如class,struct,enum等)。结构体类型是一种自定义类型。2.结构体的定义和使用结构体使用时可以先定义好结构体类型,然后再用定义好的类型来定义变量。访问结构体成员则是变量名.成员名,举个栗子:#include<stdio.h>struct student{ //定义

2021-01-19 08:59:48 2089 1

原创 C语言中的自定义类型:enum枚举

C++学习笔记:enum枚举1.C语言中的枚举1.1 枚举的作用1.2 枚举的定义与使用1.3 C语言为何需要枚举1.4 宏定义和枚举的区别2.C++中的枚举3.关于枚举的3个小细节1.C语言中的枚举1.1 枚举的作用枚举在C语言中其实是一些符号常量集。枚举定义了一些符号,这些符号的本质就是int类型的常量,每个符号和一个常量绑定。这个符号就表示一个自定义好的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个int类型的数字。例如可以使用数字1、2、3、4、5、6、7来代表周一到周末,但是纯数字

2021-01-18 20:49:46 604

原创 C++中的引用剖析

C++学习笔记:引用1.引用介绍2.引用和指针的对比3.引用的本质剖析3.1 引用可以加const修饰3.2 引用和sizeof运算符3.3 引用的本质是const指针1.引用介绍在C语言中,对于下面两个实现交换变量值的函数,因为函数传参传的是函数值,swap1()是完成不了的,而swap2()可以。#include<stdio.h>void swap1(int a,int b){ int tmp=a; a=b; b=tmp;}void swap2(int* pa,int

2021-01-18 10:35:49 168

原创 C++命名空间:默认命名空间与匿名命名空间

3.C++默认命名空间(1)又叫全局命名空间(2)默认命名空间引用其他命名空间方法(3)默认命名空间引用自己的方法(4)其他命名空间引用默认命名空间中的方法::f();4.C++匿名命名空间1.3.4.1、std和cout的引入(1)std是C++标准库定义好的一个namespace(2)cout是std这个namespace下的一个标准输出工具,类似于C中的printf(3)用法示例1.3.4.2、匿名命名空间的定义和使用(1)定义(2)匿名命名空间中引用其他命名空间中的方法(3

2021-01-17 10:10:44 5676 6

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除