程序设计
文章平均质量分 90
AI有渔
AI有渔
展开
-
C++笔记---面向对象编程之继承关系的讨论
前言面向对象编程(OOP)是C++联邦中一个非常重要的部分,最近在学习effective C++的时候正好学习到这部分,所以就想按照自己的逻辑对其做一个总结,方便学习回忆。而继承是C++三大特性(继承、多态、封装)之一,其中涵盖的知识点比较多,比如说:继承可以是单一继承或者多重继承,继承关系可以是public、private或者protected,成员函数可以是pure virtual、impure virtual或者non-virtual等等。在经过学习之后发现自己对于继承的理解方式改变了,因为之前只原创 2022-04-25 21:31:25 · 1128 阅读 · 1 评论 -
C++笔记---对于单例模式的相关讨论
前言单例模式是程序设计中一种非常常见的设计模式,在面向对象编程的时候,对于某一个类的实例对象,如果我们为了不频繁的创建和销毁它并且全局都使用这一个实例,那么我们就可以将其设计为单例模式,单例模式在实际应用场景还是比较多的,比如我们使用的鼠标箭头在系统运行过程中只能有一个,再比如我们设计登录框按钮的时候,即使多次单击也必须出现一个登录框实例。单例模式所涉及的知识点当前先将其归纳为3点:单例模式最基本的设计方法 既然我们要保证将class设计成单例模式,那么其必然利用了一定的设计方法才能保证当创建多个对原创 2022-04-13 17:16:54 · 963 阅读 · 0 评论 -
C++笔记---对象初始化的讨论
前言初始化的必要性: C++悠久的发展历史导致其看起来更像是一个联邦,包括很多部分,比如说c语言部分、面向对象编程的部分、STL部分等等,这导致C++的在使用的时候需要考虑每个部分的特性及特点,拿对象的初始化部分来说,c语言部分的array声明之后系统不保证将数组初始化,而STL部分的vector却有这种功能,而当我们无意中使用为初始化的对象可能会导致程序出现不明确的行为,而记住C++各个部分的初始化规则又很繁琐,所以我们最保险的做法就是在使用对象之前保证对其进行初始化,这是一个非常好的习惯!常见的初始原创 2022-04-07 11:46:13 · 1242 阅读 · 0 评论 -
pybind11使用记录---ubuntu下使用cmake编译c++工程为python库
前言:因为最近c++下的工程需要在python下调用,所以需要把c++编译成可供python调用的库,记录一下具体做法:编译c++有多种方法,因为我的是cmake构建的工程,所以直接在cmake的基础上编译成python库(c++中用了第三方库opencv和boost)下载编译pybind11下载pybind11:git clone https://github.com/pybind/pybind11.git安装pytest: pip install pytest编译:c.原创 2020-12-10 17:59:31 · 4739 阅读 · 4 评论 -
C++学习之string类的一点点笔记
首先明确一点,c-风格的字符串是这么写的char s[] = "abcdefg";而在c++中,出现了一个string类,在使用它的时候需要 #include<string> ,这也是有时候在输入字符串时候有的一点区别:char s1[10]; cin.getline(s1) 与 string s2; getline(cin,s2)这是因为前者是类 istream...原创 2020-04-14 14:39:32 · 177 阅读 · 0 评论 -
C++学习之数组作为函数参数
一维数组C++将数组名解释为其第一个元素的地址对数组名使用sizeof函数得到整个数组的大小(字节为单位)(但是传参之后数组名就退化成单纯的指针了)对数组名用&取地址得到的整个数组的地址(内存块)在一维数组传参中,需要传入两个参数: 数组名和数组大小int sum_array(int* arr, int n){}int sum_array(int arr[],...原创 2020-04-04 12:01:12 · 3812 阅读 · 0 评论 -
C++学习之初始化列表的使用
原文章链接:https://blog.csdn.net/yhc166188/article/details/81586549 类对象的构造顺序是这样的:1.分...转载 2020-04-01 09:37:35 · 267 阅读 · 0 评论 -
C++学习之#define的替换
#define ASPECT_RADIO 1.512上面语句运用了宏定义,在代码中ASPECT_RADIO的值就是1.512,但是需要注意的是:宏定义语句的处理是预处理器进行操作的,也就是说在编译器对代码进行编译的时候,所有的ASPECT_RADIO就已经被替换成1.512了,如果程序中出现错误的时候,打印的信息是不会包含ASPECT_RADIO的,这无疑对错误的定位造成了困难。一般我们...原创 2020-03-26 17:32:30 · 2729 阅读 · 0 评论 -
C++学习之赋值运算符函数
什么时候赋值运算符符号被调用?一个已经被初始化的实例从另一个实例中被赋予初值的时候,赋值运算符函数被调用(注意其和拷贝构造函数的区别)Test T1, T2;T2 = T1; //assignment operator called什么时候我们应该写我们自己的赋值运算符函数?一般来说,如果class中不包含指针,我们就没有必要单独写自己的赋值运算符函数,因为编译器会为每个cla...原创 2020-03-24 15:44:46 · 415 阅读 · 0 评论 -
C++学习之如何看待C++
C++本来的名字叫C with Classes,也就是带有class的C语言,但是慢慢的其发展已经超越了原来的设定,不断的增加新的东西,虚函数(virtual function)、运算符重载(operator overloading)、多继承(multiple inheritance)、标准模板库(standard template library,STL)、异常处理(exception)、运行...原创 2020-03-24 00:14:11 · 357 阅读 · 0 评论 -
最小生成树之kruskal算法及查并集
kruskal算法是由Joseph Kruskal在1956年发表用来生成最小生成树的算法之一,另外一个经典的最小生成树算法是Prim算法,两者都是经典的贪心算法,区别在于prim算法以顶点作为操作对象,kruskal以边作为操作对象。此次我们主要研究一下kruskal算法。对于一个算法我们除了关心他是如何实现的,还关心其具体的应用。最小生成树的理论如下:在一给定的无向图G = (V, E)...原创 2020-03-15 17:23:54 · 764 阅读 · 0 评论 -
结构体struct相关知识整理
前言:struct是c/c++中一种自定义的变量类型,可以用来定义struct变量,在程序设计中使用struct可以使得程序更加整洁清晰。struct在c/c++中用法不完全相同,现将相关知识整理如下,方便日后查找和交流。我们以以下结构体为例进行整理:struct stu{ char *name; //姓名 int num; //学号...原创 2020-02-07 10:50:29 · 897 阅读 · 2 评论