C++基础知识
Patrick-Star
我用双手改变世界!
展开
-
C++知识点6
一丶构造函数知识点1:构造函数—特殊的成员函数,用来控制对象的初始化过程。无返回类型,可重载,不能被声明为const.知识点2:若无,则有默认的构造函数,是编译器自己隐式的定义的。又称合成的默认构造函数。知识点3:某些类是不能使用默认的构造函数的,以下三个原因:1:在未声明任何构造函数的前提下,类内对象的初始化将不受控制2:合成的默认构造函数可能会造成不必要的错误,如若没有类内初始值来初始化成员,...原创 2018-03-06 21:12:32 · 211 阅读 · 0 评论 -
虚函数(虚析构函数)与作用域
一丶虚函数与作用域名字查找优先于类型查找声明在内层作用域的函数并不会重载声明在外层作用域的函数如果派生类成员和基类成员的形参列表不一致,基类成员也仍然会被屏蔽掉!!!知识点1:当类之间存在继承关系时,派生类的作用域嵌套在其基类的作用域之内,如果一个名字在派生类作用域中找不到定义,则编译器会继续在外层基类中寻找知识点2:派生类可以重用定义在其直接基类或者间接基类中的名字,此时定义在内层作用域的名字将...原创 2018-04-17 09:28:32 · 355 阅读 · 0 评论 -
查找第一种:顺序查找
//顺序表查找//顺序查找, a为数组, n为数组长度, key为关键字int Sequential_Search(int *a, int n, int key){ int i; for (i = 1; i <= n; i++) //注意i从1开始,原因见下面 { if (a[i] == key) { return i; } } return 0;}int Sequentia...原创 2018-03-29 16:00:23 · 195 阅读 · 0 评论 -
查找第二种:二分查找(折半查找)丶插值查找和斐波那契查找
//二分查找(折半查找)int Bindary_Search(int *a, int n, int key) //第一版本{ int low, high, mid; low = 1; high = n; while (low <= high) { mid = low + (high - low) / 2; //折半 最重要! if (a[mid] > key)...原创 2018-03-29 16:15:02 · 492 阅读 · 0 评论 -
“error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载他人加上自己独特的理解,希望能对你有所帮助)
上面部分转载自他人,若以看过,可以直接跳到下面。------------------------------------------------------------------------------------------------------------------------------问题描述如下:有 三个源文件,A.h、B.cpp、C.cpp。A.h是头文件,其中声明了三个变量a1...转载 2018-04-12 21:20:28 · 475 阅读 · 0 评论 -
十九章:Union联合体 和 enum 枚举
一丶Union联合体知识点1:union是一种特殊的类,可以包含多个数据成员,但是在任意时刻只能有一个数据成员可以有值,其他成员属于未定义的状态,分配给union的内存只要能存储它的最大数据成员即可知识点2:union中不能含有引用类型的成员,但不可继承、不含有虚函数知识点3:union的名字就相当于一个类型名,可以使用一对花括号显式初始化:union Token {};//后面的分号勿忘Toke...原创 2018-04-18 19:39:52 · 280 阅读 · 0 评论 -
第三章:线性表:单链表
头文件部分using namespace std;#define MAX_SIZE 20#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef struct Node{ ElemType data; struct Node *next;}Node;typedef struct Node *LinkLi...原创 2018-04-19 15:18:17 · 204 阅读 · 0 评论 -
学习C++之前要学C语言吗?
C++ 读作“C加加”,是“C Plus Plus”的简称。顾名思义,C++是在C语言的基础上增加新特性,玩出了新花样,所以叫“C Plus Plus”,就像 iPhone 6S 和 iPhone 6、Win10 和 Win7 的关系。从语法上看,C语言是C++的一部分,C语言代码几乎不用修改就能够以C++的方式编译,这给很多初学者带来了不小的困惑,学习C++之前到底要不要先学习C语言呢?我对这个...转载 2018-04-19 16:28:51 · 7691 阅读 · 4 评论 -
4.4章:栈的顺序存储结果及实现
头文件部分#define MAX_SIZE 20#define OK 1#define ERROR 0#define TRUE 1#define FALSE 0typedef int SElemType;typedef int Status;#define MAXSIZE 100typedef struct{ SElemType data[MAXSIZE]; int t...原创 2018-04-19 17:36:06 · 205 阅读 · 0 评论 -
第一章:基础议题
//每一个阿拉伯数字代表一个改善编程与设计的有效方法当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法需求无法由一个pointer达成,此时应该选择引用。任何其他时候,请采用pointer。在某种必须使用转型的情况下,最好使用C++转型操作运算符。 优点:容易被解析, 编译器也能因此诊断转型错误。 每次转型都能够更明确的指明意图,并且可以告诉...原创 2018-05-12 09:43:39 · 166 阅读 · 0 评论 -
C语言运算符优先级表
文章作者:姜南(Slyar) 文章来源:Slyar Home (www.slyar.com) 转载请注明,谢谢合作。单目运算符 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 ...转载 2018-08-23 15:08:53 · 5574 阅读 · 0 评论 -
这样的TCP/IP协议,你看懂了吗?
本文章转载自https://blog.csdn.net/yulyu/article/details/69062288精通 TCP/IP,熟练使用 Socket 进行网路编程。看到这句话,有没有感到很熟悉呀?相信很多人在投递简历的时候都看到过这条要求,很多人会觉得我们在实际开发中一般用不到这些知识,所以对这些东西不屑一顾.但是笔者认为想要做出更好的 APP,那么对这些基础知识必须要有一定的...转载 2018-08-24 13:34:17 · 30577 阅读 · 0 评论 -
C/C++重定义该如何解决
1.#pragma once用来防止某个头文件被多次include;#ifndef,#define,#endif用来防止某个宏被多次定义。2.#pragma once是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了;#ifndef,#define,#endif这个是C++语言相关,这是C++语言中的...原创 2018-01-28 19:15:00 · 2483 阅读 · 0 评论 -
C++必须使用【初始化列表】初始化数据成员的三种情况
类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员;2.进入构造函数后在构造函数中执行一般赋值与计算。使用初始化列表有两个原因:原因1.必须这样做:《C++ Primer》中提到在以下三种情况下需要使用初始化成员列表:情况一、需要初始化的数据成员是对象的情况(这里包含了继承情况下,通过显示调用父类的构造函数对父类数据成员进行初始化);情...原创 2018-09-09 13:01:38 · 447 阅读 · 0 评论 -
程序是如何变成可执行的机器代码的?
程序编译的过程中就是将用户的文本形式的源代码(c/c++)转化成计算机可以直接执行的机器代码的过程。主要经过这么几个过程:0、预编译,又称为预处理 , 是做些代码文本的替换工作1、编译,由编译器将c源代码(.cpp)转变成汇编代码(.s)2、汇编,由汇编器将汇编代码(.s)转变成目标代码(.o)3、链接,由链接器将代码在执行过程用到的其他目标代码和库文件链接成为一个可执行程序也就是...原创 2018-09-06 09:10:43 · 4946 阅读 · 0 评论 -
内存结构 堆 栈 全局区 常量区 代码区
1. 一个由C/C++编译的程序占用的内存分为以下几个部分:1.1 栈区(stack) 由编译器自动分配和释放,存放函数的参数值、局部变量的值等。其操作方式类似于数据结构中的栈。1.2 堆区(heap) 一般由程序员分配和释放,若程序员没有释放,则可能在程序结束时由操作系统(OS)回收。注意它与数据结构中的堆是两回事,其分配方式倒是类似于链表。1.3...转载 2018-09-11 09:07:09 · 876 阅读 · 1 评论 -
类的继承与访问
一丶类的继承与多态知识点1:面向对象程序设计的三个基本概念:数据抽象、继承和动态绑定(核心概念)数据抽象:将类的接口与实现分离继承:我们可以定义与其他类相似但完全不相同的新类动态绑定:在使用这些彼此相似的类时,在一定程度上忽略他们的区别,统一使用它们的对象知识点2:类的继承构成一种层次关系,在层次根部的为基类,其他类则直接或者间接的从基类中继承而来,称为派生类基类负责定义在层次关系中所有类共有的数...原创 2018-04-17 09:26:50 · 292 阅读 · 0 评论 -
排序第六章:归并排序第二版本(迭代调用)
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 16:46:15 · 214 阅读 · 0 评论 -
C++小知识3
继C++小知识2十.数组和指针int ia[3][4] = { 0,1,2,3,4 ,5,6,7,8,9,10,11}; for (int (*row)[4] = ia; row != ia + 3; row++) { cout << "row:" << (row) << endl; //输出row首元素的指针,当程序使用多维数组的名字时,会自动将其转换成指...原创 2018-03-01 21:30:08 · 138 阅读 · 0 评论 -
学习C++语言的注意点!!!!
这些话谨送给那些准备学习C++的程序员!1.把C++当成一门新的语言学习(和C没啥关系!真的。); 2.看《Thinking In C++》,不要看《C++变成死相》; 3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为 他们很难而我们自己是初学者所以就不看; 4.不要被VC、BCB、BC、MC、TC等词汇所迷惑...转载 2018-03-02 22:36:18 · 267 阅读 · 0 评论 -
C++ Primer (第十章:泛型算法)
一丶因为这些算法只作用于迭代器,而不直接对容器进行操作.本阶段所学到的一些泛型算法:find()搜索,accmulate()求和,equal()相等判断,fill()、fill_n()赋值,back_insert()插入操作,copy()拷贝,sort()排序,unique()重排并消重复二丶reverse是改变容器容量的,并没有改变其大小,用resize()算法只是产生了一个插入迭代器,然后使用...原创 2018-03-10 16:38:14 · 239 阅读 · 0 评论 -
C++知识点,第十三章:拷贝构造
一丶拷贝控制函数知识点1:在定义一个类时,我们可以显式或隐式的定义在此类型的对象拷贝、赋值、移动、销毁是做什么,主要通过五种特殊的成员函数来完成这些操作:拷贝构造函数、拷贝复制运算符、移动构造函数、移动复制运算符。析构函数知识点2:拷贝和移动构造函数定义了当用同类型的一个对象初始化本对象时做什么。拷贝和移动赋值运算符定义了将一个对象赋予同类型的另一个对象时做什么。析构函数定义了当此类型对象销毁时的...原创 2018-03-16 22:17:57 · 305 阅读 · 0 评论 -
C++知识点4
继C++知识点3十一.下标和指针int ia[4] = {};表达式*(ia + 3)计算ia前进4个元素后的新地址, 解引用该结果指针的效果等价于表达式ia[3].很多情况下,使用数组的名字其实用的就是一个指向数组首元素的指针,例如当对数组使用下标运算符的时候,编译器会自动执行这个转换。ia【0】是一个使用了数组名字的表达式,对数组执行下标运算其实是对指向数组元素的指针执行下标运算。十二.复合表...原创 2018-03-03 20:59:34 · 157 阅读 · 0 评论 -
C++知识点5
一丶语句空语句:最简单的语句,当程序中在语法上需要一条语句,但是逻辑上却不需要时,就可以用到空语句使用空语句时,必须加上注释,使得代码阅读者知道语句是有意义的。 复合语句(也称为“块”):指用花括号括起来的语句和声明的序列。一个块就是一个作用域,在块中引入的名字只能在块内部以及嵌套在块中的子块访问注意:块不以分号结尾。二丶符号用法在Windows中:'\r' 回车,回到当前行的行首,而不会换到下...原创 2018-03-04 22:13:47 · 454 阅读 · 0 评论 -
蓝桥杯如何计算四平方和,并输出CPU运算时间
四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5 = 0^2 + 0^2 + 1^2 + 2^27 = 1^2 + 1^2 + 1^2 + 2^2(^符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0 <= a <= b <= c <=...原创 2018-03-21 20:48:22 · 272 阅读 · 0 评论 -
排序第一章:探究冒泡排序
排序算法来说,这次的博客总共写了七个排序,按照排序的简单性来看分为两类:1.简单算法: 冒泡排序, 简单选择排序, 直接插入排序2.改进算法: 希尔排序, 堆排序, 归并排序, 快速排序从平均情况来看,最后三种改进算法要胜过希尔排序, 并且远远胜过前面三种简单算法。 而根据排序排序过程中借助的主要操作, 我们将排序分为四类:插入排序类: 直接插入排序, 希尔排序选择排序...原创 2018-03-27 09:34:41 · 339 阅读 · 1 评论 -
排序第二章:简单选择排序
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 09:39:45 · 294 阅读 · 0 评论 -
排序第三章:直接插入排序
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 09:43:17 · 216 阅读 · 0 评论 -
排序第四章:希尔排序
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 10:28:09 · 278 阅读 · 0 评论 -
排序第五章:堆排序
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 13:15:00 · 254 阅读 · 0 评论 -
排序第六章:归并排序(递归调用)
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 14:49:31 · 393 阅读 · 0 评论 -
排序第七章:快速排序标准版
#define MAX_SIZE 10typedef struct{ int m[MAX_SIZE ]; int length;} SqList;//用排序,铁定跑不了这个swap函数,最好自己写一个void swap(SqList *q, int i, int j);void swap(SqList *q, int i, int j){ int temp = q->m[i]; q->...原创 2018-03-27 16:02:10 · 312 阅读 · 0 评论 -
语言基础(C++)
1.指针和引用的区别 指针是对象,引用不是对象,而是为已经存在的对象所起的别名,不占据内存空间 指针对应的是对象的地址,引用对应的是对象 指针可以指向空,引用不可以,引用必须初始化 指针可以改变它指的对象,引用一旦绑定就不可更改 引用和指针都实现了对其他对象的间接访问 2.堆和栈的区别 生长方式不同 堆是向上生长的,栈是向下生长的 ...原创 2019-04-15 15:09:42 · 518 阅读 · 0 评论