
笔记
文章平均质量分 77
看那年十七
兴趣 + 努力 = 快乐学习
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++转换函数 (conversion function)与 C++中explicit关键字
C++转换函数 (conversion function)与 C++中explicit关键字本文将介绍C++中的转换函数(conversion function)和 C++中explicit关键字。1、c++中explicit的作用 作用:在c++中,explicit只能用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。 class Circle { public: Circle(double r) : m_R(r) {原创 2022-01-07 22:53:44 · 311 阅读 · 0 评论 -
C++面向对象编程与类之间的关系(继承、复合、委托)
C++面向对象编程与类之间的关系(继承、复合、委托)1、复合(Composition)2、继承(Inheritance)3、委托 (Delegation)4、虚函数一、复合(Composition)表示 has-a示例代码:template <class T, class Sequence = deque<T> >class queue {...protected: Sequence c; // 底层的容器public: // 以下完全利用 对象c 的操作完原创 2022-01-06 21:33:27 · 636 阅读 · 0 评论 -
C++面向程序设计之三个特殊的函数(拷贝构造、拷贝复制、析构)
C++面向程序设计之三个特殊的函数(拷贝构造、拷贝复制、析构)本文记录四大点: 1、三个特殊的函数(拷贝构造、拷贝复制、析构) 2、讨论一下 堆、栈 与内存的管理 3、new 和 delete与new[] 和 delete[] 4、static 关键字的使用1、三个特殊的函数 记住三个重要的特殊函数,我们写一个类的时候,编译器会默认给我们提供无参构造、拷贝构造、拷贝复制、析构四个函数,对于不含有指针数据的情况下我们可以使用默认的函数,但是如果带有指针我们应该重写这三个原创 2022-01-05 20:18:39 · 610 阅读 · 0 评论 -
C++面向对象设计之如何写好一个单一的Class(基于对象)
C++面向对象设计之如何写好一个单一的Class(基于对象)一、前言 我们在编写程序的时候时常会考虑我的类是否设计的合理,是否能达到预期的功能效果,是否具备良好的扩展性、易读性等等。编写出一个类并不难,但是要设计好一个类就需要不断的进行思考,每一个程序都有输入输出,我们在设计时首先要明白我们的输入输出是啥,因为我们所编写的程序是对用户进行的输入进行一系列的处理,最终给用户返回一个可靠的结果,所以常说程序等于数据结构加上算法。 C++其实可以看做两部分:1、C++的语言部分 2、C++标准库原创 2022-01-04 20:55:54 · 508 阅读 · 0 评论 -
libigl库的学习笔记之安装
记录libigl的安装配置1、在github上下载git clone --recursive https://github.com/libigl/libigl.git原创 2021-03-28 12:25:44 · 1490 阅读 · 0 评论 -
数据结构学习之排序算法的学习
学习数据结构实现了一些简单的排序算法,做个学习记录。#include<iostream>#include<cstdlib> using namespace std;#define MAXSIZE 20typedef struct { //设置了一个哨兵r[0];元素从r[1]开始存放 int r[MAXSIZE+1]; //定义SqList结构体,存放一个数组和数组的长度 int length; }SqList;void swap(SqLi原创 2020-12-19 17:41:04 · 159 阅读 · 1 评论 -
数据结构之对图的学习
图(Graph)的概念:是由顶点的集合和顶点之间边的集合组成,通常表示为:G ( V , E )其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。在图中的数据元素,我们称之为顶点(Vertex),顶点集合有穷非空。在图中,任意两个顶点之间都可能有关系,顶点之间的逻辑关系用边来表示,边集可以是空的。简单图:在图中,若不存在顶点到其自身的边,且同一条边不重复出现。邻接、依附:无向图中,对于任意两个顶点vi和顶点vj,若存在边(vi,vj),则称顶点vi和顶点vj互为邻接点,同时称边(vi原创 2020-12-17 17:52:36 · 908 阅读 · 0 评论 -
数据结构之对递归的学习
概念:递归在计算机科学中指一种通过将重复问题分解为同列子问题来解决问题的方法。递归是一种常见的算法或者编程技巧。很多数据结构和算法的编码实现都会使用到递归,比附DFS深度搜索,前中后序二叉树遍历等等。递归需要满足三个条件:1.一个问题的解可以分成几个解。子问题就是数据规模更小的的问题2.这个问题和分解之后的子问题,除了数据规模不同,解决思路是一样的。3.存在递归的终止条件如果没有终止条件就成了无限循环了。如何写一个递归呢?最关键的两部就是写出递推公式,和找到终止条件下面是简单的几个例子原创 2020-12-15 16:44:38 · 134 阅读 · 0 评论 -
数据结构之串的基本学习理解
串的基本概念是由零个或者多个字符组成的有序的序列串长:串中所含字符的字数称为该串的长度空串:含零个字符组成的串称为空串子串:一个串中任意个连续字符组成的序列称为该串的子串,空串是任何串的子串主串:包含子串的串相应的成为主串顺序串的基本操作#include<iostream>#include<stdio.h>using namespace std;#define MAXSIZE 100//进行类型的声明; typedef struct{ char data原创 2020-12-14 16:23:15 · 521 阅读 · 0 评论 -
C++ 文件操作详细解读
简介:程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作一、文本文件5.1.1写文件写文件步骤如下:包含头文件#include 创建流对象ofstream原创 2020-11-08 11:37:32 · 1143 阅读 · 0 评论 -
C++面向对象的特征:多态知识点二
一、纯虚函数和抽象类在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容因此可以将虚函数改为纯虚函数纯虚函数语法: virtual 返回值类型 函数名 (参数列表)= 0 ;当类中有了纯虚函数,这个类也称为抽象类抽象类特点:1、无法实例化对象2、子类必须重写抽象类中的纯虚函数,否则也属于抽象类示例:class Base{public://纯虚函数//类中只要有一个纯虚函数就称为抽象类//抽象类无法实例化对象//子类必须重写父类中的纯虚函数,否则也属于抽象类原创 2020-11-08 11:12:41 · 392 阅读 · 3 评论 -
C++面向对象的特征:多态知识点三
一、 虚析构和纯虚析构多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码解决方式:将父类中的析构函数改为虚析构或者纯虚析构。虚析构和纯虚析构共性:1、可以解决父类指针释放子类对象2、都需要有具体的函数实现虚析构和纯虚析构区别:如果是纯虚析构,该类属于抽象类,无法实例化对象虚析构语法:virtual ~类名(){}纯虚析构语法:virtual ~类名() = 0;类名::~类名(){}示例:class Animal {public:Animal原创 2020-11-08 11:11:30 · 145 阅读 · 0 评论 -
C++面向对象的特征:多态知识点一
一、概念:多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址示例:class Animal{public://Speak函数就是虚函数//函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了。virtual void speak(){cout <<原创 2020-11-05 09:53:22 · 154 阅读 · 1 评论 -
C++面向对象的特性:继承知识点二
一、 继承中的对象模型问题:从父类继承过来的成员,哪些属于子类对象中?示例:class Base{public:int m_A;protected:int m_B;private:int m_C; //私有成员只是被隐藏了,但是还是会继承下去};//公共继承class Son :public Base{public:int m_D;};void test01(){cout << "sizeof Son = " << sizeof(Son) &l原创 2020-11-04 11:30:38 · 219 阅读 · 0 评论 -
C++面向对象特性:继承知识点一
一、 继承的基本语法例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处基本语法实现://Java页面class Java{public:void header(){cout << "首页、公开课、登录、注册...(公共头部)" << endl;}void footer(){cout << "帮助中心、交流合作、站内地图..原创 2020-11-04 11:18:10 · 216 阅读 · 1 评论 -
C++运算符重载的理解
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。一、加号运算符的重载作用:实现两个自定义数据类型相加的运算示例:class Person {public:Person() {};Person(int a, int b){this->m_A = a;this->m_B = b;}//成员函数实现 + 号运算符重载Person operator+(const Person& p) {Person temp;temp.m_A原创 2020-11-04 09:53:31 · 3428 阅读 · 0 评论 -
C++友元函数的浅入理解
简介:生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去,但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术,友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现:1、全局函数做友元2、类做友元3、成员函数做友元一、全局函数做...原创 2020-11-04 09:10:51 · 154 阅读 · 0 评论 -
C++对象模型和this指针理解
一、成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上示例:class Person {public:Person() {mA = 0;}//非静态成员变量占对象空间int mA;//静态成员变量不占对象空间static int mB;//函数也不占对象空间,所有函数共享一个函数实例void func() {cout << "mA:" << this->mA << endl;}/原创 2020-11-03 23:32:15 · 180 阅读 · 0 评论 -
C++面向对象的特性:封装知识点一
一、封装封装的意义:将属性和行为作为一个整体,表现生活中的事物,将属性和行为加以权限控制1、在设计类的时候,属性和行为写在一起,表现事物。2、语法: class 类名{ 访问权限: 属性 / 行为 };3、类在设计时,可以把属性和行为放在不同的权限下,加以控制访问权限有三种:public 公共权限protected 保护权限private 私有权限4、成员属性设置为私有优点1:将所有成员属性设置为私有,可以自己控制读写权限优点2:对于写权限,我们可以检测数据的有效性struct原创 2020-11-02 22:11:45 · 232 阅读 · 0 评论 -
关于C++“函数“的浅谈
一、函数的默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法: 返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int c = 10) {return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数int func2(int a = 10, int b = 10);int func2(int a, i原创 2020-11-01 21:48:49 · 241 阅读 · 0 评论 -
对C++中“引用“的浅入理解
一、引用的基本使用作用:主要是给你定义的变量起一个别名。基本语法:数据类型 &引用名=原名int main() {int a = 10;int &b = a;cout << "a = " << a << endl;cout << "b = " << b << endl;b = 100;cout << "a = " << a << endl;cout <&l原创 2020-11-01 21:19:28 · 218 阅读 · 0 评论 -
C++内存分区管理
文非常适合初学Java的程序员,主要是来了解一下Java中的几种for循环用法,分析得十分详细,一起来看看。J2SE 1.5提供了另一种形式的for循环。借助这种形式的for循环,可以用更简单地方式来遍历数组和Collection等类型的对象。本文介绍使用这种循环的具体方式,说明如何自行定义能被这样遍历的类,并解释和这一机制的一些常见问题。在Java程序中,要“逐一处理”――或者说,“遍历”――...原创 2020-11-01 20:40:53 · 443 阅读 · 0 评论