自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 收藏
  • 关注

原创 静态链表和动态链表

1.静态链表分配在栈上,实现链表的初始化以及遍历的功能#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#include <time.h>#include <Windows.h>//结点的结构体struct LinkNode{ int num;//数据域

2021-04-13 17:53:34 273

原创 STL--queue容器

queue容器queue容器是一种先进先出的数据结构,它有两个出口。队列容器允许从一端新增数据,从里一段移除元素队列只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include <queue>#include <string>//队列 Queueclass Person{public: Pe

2021-03-25 17:30:09 183

原创 STL--stack容器

stack容器stack是一种先进后出的数据结构,他只有一个出口,栈不允许有遍历行为。栈可以判断容器是否为空栈可以返回元素个数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include <stack>//栈容器void test01(){ //特点:符合先进后出的数据结构 stack<int>s; //入栈 s.push(10); s

2021-03-25 16:42:02 193

原创 STL--deque容器

1.deque容器基本概念:双端数组,可以对头段进行插入从删除操作deque内部工作原理:deque内部有一个中控器,来维护缓冲区中真是的数据。中控器中记录的是地址,可以向头部增删数据。当读取数据时,为了保证数据是只读状态,应加入const来修饰形参。#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<deque>//deque 构造函数void pri

2021-03-25 16:14:56 160

原创 STL中vector容器

1. vector容器的构造函数#include<iostream>using namespace std;#include<vector>void printVector(vector<int>& v){ for (vector<int>::iterator it = v.begin(); it != v.end(); it++) { cout << *it << " " <<endl;

2021-03-23 11:16:15 151

原创 STL---string容器

1. string的构造函数#include<iostream>using namespace std;#include<string>//string的构造函数void test01(){ string s1; //默认构造 const char* str = "hello world"; string s2(str); cout << "s2=" << s2 << endl; string s3(s2); c

2021-03-23 10:51:03 110

原创 C++中容器vector

1.vector容器存放内置数据类型#include<iostream>using namespace std;#include<vector>#include<algorithm> //标准算法的头文件//vector容器存放内置数据类型void myPrint(int val){ cout << val << endl;}void test01(){ //创建了一个vector容器,数组 vector<

2021-03-21 20:27:54 179

原创 初识STL

1. STL的作用:为了提高代码的复用性,提供一套标准的数据结构和算法模板2. STL的6大组件:容器,算法,迭代器,仿函数,适配器,空间配置器3. STL的容器分为:序列式容器,关联式容器4. STL的算法分为:质变算法,非质变算法5. STL中迭代器常用的有双向迭代器,和随机访问迭代器,使用时当指针用即可...

2021-03-21 11:55:16 178

转载 C++中类模板与友元

类模板配合友元函数的类内和类外实现全局函数的类内实现-----直接在类内生命友元即可全局函数的类外实现-----需要提前让编译器知道全局函数的存在#include <iostream>using namespace std;#include<string>//通过全局函数来打印Person的信息//提前让编译器知道Person类存在template<class T1, class T2>class Person;//类外实现templa

2021-03-21 11:28:50 227

原创 C++中类模板分文件编写

需要解决的问题:类模板中成员函数创建的时机是在调用阶段,导致分文件编写时会链接不到解决方法:直接包含.cpp源文件将声明和实现写在同一个文件中,并更改后缀名为.hpp,hpp是约定的名称,并不是强制.hpp文件#pragma once#include <iostream>using namespace std;template<class T1, class T2>class Person{public: Person(T1 name, T2

2021-03-21 10:34:49 472

原创 C++中类模板成员函数的类外实现

类模板中心成员函数类外实现时,需要加上类模板参数列表#include<iostream>using namespace std;#include<string>//类模板中成员函数的类外实现template<class T1, class T2>class Person{public: Person(T1 name, T2 age); /*{ this->m_Name = name; this->m_Age = age; }

2021-03-21 09:59:23 603

原创 C++中类模板的继承

1.当子类继承的父类是一个类模板时,子类在声明的时候,要指出父类中T的类型2.如果不指定,编译器无法分配内存3.如果想灵活指出父类中T的类型,子类也需变为类模板#include<iostream>using namespace std;//类模板与继承template<class T>class Base{ T m;};//class Son :public Base //错误的,必须要知道父类中T的数据类型,才能继承给子类class Son:p

2021-03-20 22:37:49 648

原创 C++中类模板对象做函数参数

1.指定传入的类型2.参数模板化3.整个类模板化#include<iostream>using namespace std;#include<string>template<class T1, class T2>class Person{public: Person(T1 name, T2 age) { this->m_Name = name; this->m_Age = age; } void showPerso

2021-03-20 22:16:26 154

原创 C++中类模板

1.类模板类模板和函数模板的区别 类模板不可以使用自动类型推导,只能使用显示指定类型的方式 在类模板中可以有默认参数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<string>template<class NAMETYPE, class AGETYPE>class Person{public: Person(NAMETY...

2021-03-18 11:38:19 154

原创 C++中函数模板

1.函数模板泛型编程的思想:模板技术,特点:类型参数化template<typename T> 告诉编译器后面紧跟着的函数或者类中出现T不要报错,T是一个通用的数据类型案例:实现两个数交换的函数使用:自动类型的推导:必须要推导出一致的T才可以使用显示指定类型:函数名<int>(a, b)#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;void myS

2021-03-18 10:39:24 128

原创 C++中的继承

1.继承的语法继承的优点:减少重复的代码,提高代码复用性基本语法#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;// class News// {// public:// void header()// {// cout << "公共的头部" << endl;// }// // void foot()// {// cout

2021-03-16 22:44:13 144

原创 C++中运算符重载

1.递增运算符的重载前置递增(链式编程 返回值为引用)后置递增(返回值是值)#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class MyInter{ friend ostream& operator<<(ostream& cout, MyInter& myInt);public: MyInter() { m_Num = 0; }.

2021-03-16 17:28:57 122

原创 C++中的类

1.类的定义强调一点:除了静态成员,剩下的成员都需要用对象进行访问#include <iostream>using namespace std;class CPerson //struct C++{public: //访问修饰符 int a; void fun() { cout << "fun " << a << endl; }};int mian(){ //除了静态成员,剩下的成员都需要用对象进行访问 CPerso

2021-03-14 19:54:43 883

原创 C++中引用

1.引用(做函数参数),传值,传址的区别以值交换为例子#include <iostream>using namespace std;void ExChange(int &a, int &b) //引用 关联{ int temp = a; a = b; b = temp;}void ExChange2(int a, int b){ int temp = a; a = b; b = temp;}void ExChange3(int *p1,

2021-03-14 12:05:21 138

原创 C++中左移运算符的重载

1.不要滥用运算符重载,除非有需求2.不能对内置的数据类型进行重载3.对于自定义的数据类型,不可以直接用cout << 输出,需要重载左移运算符4.如果利用成员函数重载,无法实现cout在左侧,因此不用成员重载5.利用全局函数实现左移运算符重载6如果想访问类中私有的内容可以配合全局友元函数实现#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Perso

2021-03-12 11:06:06 570

原创 C++中运算符重载

1.加号运算符重载对于内置的数据类型编译器知道如何进行运算,但是对于自定义的数据类型,编译器不知道如何运算。可以利用运算符重载让符号有新的含义,利用加号重载,实现Person p1 + Person p2(Person类型数据相加的情况)2.利用成员函数和全局函数都可以实现重载。关键字是 operator+3.成员的本质:p1.operator+(p2)4.全局本质:operatr+(p1,p2)5,调用是可以使用简化版 p1 + p26.运算符重载也可以发生函数重载#d.

2021-03-12 09:52:23 142

原创 C++中友元

1.全局函数做友元函数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<string>class Building{ //利用friend关键字让全局函数 goodGay作为本类的好朋友可以访问私有成员 friend void goodGay(Building * building);public: Building() { this->

2021-03-11 21:37:01 130

原创 C++中常对象和常函数

1.常函数:在成员函数声明的后面加上const 例如:void showPerson() const2.const的目的是为了修饰成员函数中的this指针,让this指向的值不可以修改3.有些属性比较特殊,依然在常函数或者常对象中可以修改,需要加入关键字mutable4常对象:定义一个对象,在定义的对象前加上const。 例如:const Person p5.常对象只能调用常函数,且常对象也不许修改成员属性,#define _CRT_SECURE_NO_WARNINGS#inc...

2021-03-11 17:06:34 384

原创 C++中空指针访问成员函数

1.如果成员函数中在函数体中没有使用this指针,可以用空指针来调用成员函数2.如果成员函数中在函数体中用到this指针,那么这个this需要加判断,防止代码down掉#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: void showClass() { cout << "class Name is Person" <&

2021-03-11 16:09:19 326 1

原创 C++中this指针

1.this指针指向被调用的成员函数 所属的对象(哪个对象调用成员函数,this指针就指向谁)2.this指针可以解决名称冲突问题(但一般要注意命名规范,尽量避免)3.this指针隐藏在每个成员函数中,*this就是本体4.注意链式编程思想#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: Person(int age) { //用

2021-03-11 15:40:54 140

原创 C++对象模型

1.成员类中成员变量和成员函数是分开存储的2.只有非静态成员变量 属于类对象上3.空类的sizeof的结果 1#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//#pragma pack(1)class Person{public: int m_A; //只有非静态成员变量属于类对象上 void func() //成员函数 并不属于类对象上 { } static

2021-03-10 20:58:43 73

原创 C++ 单例模式-打印机案例

1.设计单例模式提供打印功能和提供打印次数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<string>class Printer{public: static Printer * getInstance() { return printer; } void printText(string text) { m_Count++;

2021-03-10 20:15:46 629

原创 C++单例模式

1.单例模式通过一个类 只能实例化唯一的一个对象私有化:默认构造 拷贝构造 唯一实例的指针对外提供接口,将唯一实例的指针返回给用户#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//主席类class ChairMan{public: static ChairMan * getInstance() { return singleMen; }private: ..

2021-03-10 12:33:17 110

原创 C++中静态成员函数

1.静态成员函数:所有的对象都共享同一份函数2.静态成员函数 只可以访问 静态成员变量,不可以访问非静态成员变量3.静态成员函数也是有访问权限的4.静态成员函数有两种访问的方式:通过对象,通过类名#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: //1.静态成员变量 //静态成员变量:编译阶段就分配内存 //类内声明,类外初始化

2021-03-10 11:40:33 222

原创 C++的静态成员变量

1.静态成员变量的特点: 所有的对象都共享同一份数据 编译的阶段就分配内存 类内声明 类外初始化2.访问方式有两种: 通过对象访问 通过类名访问 静态成员变量也是有访问权限的#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//1.静态成员变量class Person{public: //静态成员变量:编译阶段就分配内存 //类内声明,类外初始...

2021-03-09 18:01:47 240

原创 C++中new和delete

1.malloc和new的区别malloc和free属于库函数 new和delete属于运算符malloc不会调用构造函数 new会调用构造函数malloc返回void* C++下要强转 new会返回创建对象的指针2.注意事项不要用void*来接收new出来的对象,利用void*是无法调用析构函数3.利用new来创建数组int *pInt = new int[10];double *pDouble = new double[10];释放数组的时候要加[]P...

2021-03-09 10:30:07 435

原创 C++中explicit关键字

explicit的用途 防止利用隐式类型转换的方式来构造对象#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class MyString{public: MyString(char *str) { } //explicit的用途 防止利用隐式类型转换的方式来构造对象 explicit MyString(int len) { }};void test01(){

2021-03-09 09:38:29 89

原创 C++中类对象做类中成员

当其他的类对象 做本类的成员 先构造其他的类对象 再构造自身,析构的顺序和构造相反#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;#include<string>class Phone{public: Phone(string pName) { cout << "phone的有参构造函数调用" << endl; m_PhoneName =

2021-03-09 09:37:12 193

原创 C++中深拷贝与浅拷贝问题及解决

1.如果有属性开辟到堆区,利用编译器提供的拷贝构造函数会导致 浅拷贝带来的析构重复释放堆区内存2.可以利用深拷贝来解决浅拷贝的问题:可以自己创造拷贝构造函数,从而实现深拷贝#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: Person(char *name, int age) { m_Name = (char *)malloc(strle

2021-03-08 11:02:00 527

原创 C++中构造函数的规则

//1.编译器会给一个类 至少添加3个函数 默认构造 析构函数 拷贝构造(值拷贝)//2.如果我们自己提供了有参构造函数,编译器就不会提供默认构造函数(无参构造函数),但依然会提供拷贝构造函数//3.如果我们自己提供了拷贝构造函数,那么编译器就不会提供其他的构造函数#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;//1.编译器会给一个类 至少添加3个函数 默认构造 析构函数 拷贝构造(值.

2021-03-08 10:19:11 532

原创 C++中拷贝函数的调用时机

1.用已经创建好的对象来初始化新的对象2.值传递的方式给函数参数传值3.以值方式返回局部对象#define _CRT_SECURE_NO_WARNINGS#include<iostream>using namespace std;class Person{public: Person() { cout << "Person的无参构造函数调用" << endl; } Person(int a) { m_Age = a; co

2021-03-08 10:17:46 166

原创 类和对象

1.类和对象的概念(重点)类是自定义数据类型,是C语言的结构体进化而成的。对象是类实例化出的,用数据类型来定义一个变量

2021-03-01 21:41:28 106

原创 用C++调用C语言的函数

1.函数重载的原理是在汇编时,给各个函数取别名,C语言不能重载的原因是没有取别名2.C++的函数在汇编时,会给函数取别名,C语言不会。这时如果C++来调用C语言的函数,那么C++会去找取了别名的函数但是C语言没有起别名,这时候会出错。//test.h文件中#pragma once#include<stdio.h>//这是告诉C++编译器,找下面的函数要以C语言的方式去寻找#ifdef __cplusplusextern "C"{#endif void func()

2021-02-28 11:10:38 324

原创 函数重载

1.函数的重载函数重载是:允许函数名相同,这种现象叫函数重载函数重载的作用:是为了方便使用函数名函数重载的条件:同一个作用域 参数的个数不同 参数的顺序不同 参数的类型不同void func(){ cout << "func()" << endl;}void func(int a){ cout << "func(int a)" << endl;}void func(char c){ cout << "fun

2021-02-28 08:55:32 473

原创 C++学习记录(3)

1.设计一个类,求圆的周长1.1 class + 类名{ 成员变量 成员函数 }1.2 公共权限 public:1.3 设计成员属性1.3.1 半径 int m_R;1.4 设计成员函数1.4.1 获取圆的周长 int calculateZC()1.4.2 获取圆的半径 int getR()1.4.3 设置圆的半径 void setR()1.5 通过类创建对象的过程 称为 实例化对象#define _CRT_SECURE_NO_WARNINGS#include<io

2021-02-19 22:54:26 212

空空如也

空空如也

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

TA关注的人

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