C++核心学习系列
二更鼓响
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++提高13:string容器(二)
4 string字符串拼接4.1功能描述:实现在字符串末尾拼接字符串4.2函数原型:string& operator+=(const char* str); //重载+=操作符string&operator+=(const char c); //重载+=操作符string& operator+=(const string&str); //重载+=操...原创 2020-05-05 17:46:11 · 145 阅读 · 0 评论 -
C++提高12:String容器(一)
1 string基本概念1.1本质:string是C++风格的字符串,而string本质上是一个类。1.2 string和char * 区别:char * 是一个指针。string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。1.3 特点:string 类内部封装了很多成员方法,例如:查找find,拷贝copy,删除delete 替换replace,插入...原创 2020-05-03 17:38:25 · 181 阅读 · 0 评论 -
C++提高11:容器算法vector举例
容器算法迭代器初识STL中最常用的容器为Vector,可以理解为数组,下面我们将学习如何向这个容器中插入数据、并遍历这个容器。1 vector存放内置数据类型容器: vector算法: for_each迭代器: vector::iterator遍历算法一共有三种:while循环、for循环、for_each遍历算法直接上代码:#include <iostream>...原创 2020-05-03 08:57:30 · 244 阅读 · 0 评论 -
C++提高10:STL初识
1、STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西,而C++的面向对象和泛型编程思想,目的就是复用性的提升。大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作,为了建立数据结构和算法的一套标准,诞生了STL。2、STL基本概念STL:(Standard Template Library,标准模板库)。STL 从广义上分为: 容器(container) 算法(...原创 2020-04-16 08:45:07 · 165 阅读 · 0 评论 -
C++提高9: 类模板与友元
学习目标:掌握类模板配合友元函数的类内和类外实现全局函数类内实现 - 直接在类内声明友元即可全局函数类外实现 - 需要提前让编译器知道全局函数的存在先来一个类内实现的例子:#include<string>#include<iostream>using namespace std;template<class T1 ,class T2>cla...原创 2020-04-15 22:30:34 · 125 阅读 · 0 评论 -
C++提高8: 类模板成员函数类外实现和类模板分文件编写
1、类模板成员函数类外实现类外实现主要有三个关键点:作用域识别T的数据类型告诉编译器这是一个类模板剩下的,就还是基础的类内声明类外定义实现了。直接上代码观察一下:#include<string>#include<iostream>using namespace std;template <class T1, class T2>class...原创 2020-04-15 18:48:39 · 642 阅读 · 0 评论 -
C++提高7:类模板与继承
当类模板碰到继承时,需要注意一下几点:当子类继承的父类是一个类模板时,子类在声明的时候,要指定出父类中T的类型如果不指定,编译器无法给子类分配内存如果想灵活指定出父类中T的类型,子类也需变为类模板举一个例子:#include<string>#include<iostream>using namespace std;template <class T...原创 2020-04-14 19:55:23 · 201 阅读 · 2 评论 -
C++提高6:类模板对象做函数参数
类模板也是可以实例化对象的,因此类模板也可以做函数参数。1、作用类模板实例化出的对象,向函数传参的方式。2、一共有三种传入方式:指定传入的类型:直接显示对象的数据类型参数模板化:将对象中的参数变为模板进行传递整个类模板化:将这个对象类型模板化进行传递指定传入的类型直接举个例子#include<iostream>#include<string>usi...原创 2020-04-14 11:22:27 · 307 阅读 · 0 评论 -
C++提高5:类模板中成员函数创建时机
类模板中成员函数和普通类中成员函数创建时机是有区别的:普通类中的成员函数一开始就可以创建类模板中的成员函数在调用时才创建直接上例子:class Person1{public: void showPerson1() { cout << "Person1 show" << endl; }};class Person2{public: voi...原创 2020-03-29 15:50:26 · 292 阅读 · 0 评论 -
C++提高4:类模板
1 类模板的基础知识:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表。语法:template类解释:template — 声明创建模板typename — 表面其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母话不多说直接上实例:#include <string>//类模板te...原创 2020-03-29 10:45:09 · 147 阅读 · 0 评论 -
C++提高3:普通函数与函数模板
之前说了一些函数模板的应用,这一篇博客我们来说一下普通的函数和函数模板的区别,以及普通函数与函数模板的调用规则。闲话不说直接上干货。1、普通函数与函数模板区别普通函数调用时可以发生自动类型转换(隐式类型转换)函数模板调用时,如果利用自动类型推导,不会发生隐式类型转换如果利用显示指定类型的方式,可以发生隐式类型转换1.1 普通函数调用时可以发生自动类型转换(隐式类型转换)首先看第一条...原创 2020-03-06 23:06:38 · 176 阅读 · 0 评论 -
C++提高2:函数模板的案例
上回说了函数模板的基本用法和注意事项,我们来准备一个小程序,做一个函数模板的案例。案例描述:利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序排序规则从小到大,排序算法为选择排序分别利用char数组和int数组进行测试直接上代码,一些代码的解释以注释的形式放在代码中。#include<iostream>#include<string>usin...原创 2020-03-06 10:29:03 · 180 阅读 · 0 评论 -
C++提高1:函数模板的基本用法与注意事项
这个博客是关于一些模板的知识。在C++的提高中,我要用一些篇幅来讲述一下模板的相关知识。话不多说,直接开始。1、函数模板的基本用法模板的概念:模板就是建立通用的模具,通过模板可以大大提高代码的复用性模板的特点:1.模板不可以直接使用,它只是一个框架2.模板的通用并不是万能模板的应用体现了C++的泛型编程编程思想。函数模板语法函数模板作用:建立一个通用函数,其函数返回...原创 2020-03-05 18:18:13 · 484 阅读 · 0 评论 -
C++核心13:运算符重载(二)—左移运算符重载
1、左移运算符重载作用:可以输出自定义数据类型直接上代码,一些解释将以备注的形式卸载程序中。class Person { friend ostream& operator<<(ostream& out, Person& p);public: Person(int a, int b) { this->m_A = a; this-...原创 2020-03-05 15:00:32 · 314 阅读 · 0 评论 -
C++核心13:运算符重载(一)—递增运算符重载
这篇博客往后五篇,我将介绍一下什么叫做运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型1、前置递增与后置递增我们先来看一下加号运算符重载的两种情况,即前置运算符递增和后置运算符递增。上一段程序:#include<iostream>#include<string>using namespace std;void...原创 2020-03-05 14:52:51 · 563 阅读 · 1 评论 -
C++核心12:友元
生活中你的家有客厅(Public),有你的卧室(Private)。客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去。但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术。友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现:全局函数做友元类做友元...原创 2020-03-05 09:06:56 · 110 阅读 · 0 评论 -
C++核心11:this指针与C++对象模型
这一篇博客讲的是this指针。这是一个非常重要的概念。话不多说咱们直接上干货1 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象上。class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB...原创 2020-03-02 15:02:48 · 261 阅读 · 0 评论 -
C++核心10:静态成员
概念就是一句话:静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为:1、静态成员变量所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化2、静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量举一个例子:例1:静态成员变量class Person{public: static int m_A; //静态成员变...原创 2020-02-29 22:33:24 · 132 阅读 · 0 评论 -
C++核心9: 类对象作为类成员
一个不是很难但是挺重要的概念:对象成员。C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员例如:class A {}class B{ A a;}看上边的例子,B类中有对象A作为成员,A为对象成员。举一个代码例子:#include<iostream>#include<string>using namespace std;class...原创 2020-02-29 22:19:19 · 278 阅读 · 0 评论 -
C++核心8:初始化列表
C++提供了初始化列表语法,用来初始化属性。我感觉实际上就是一个重新赋值的操作。简单介绍一下吧。语法:构造函数():属性1(值1),属性2(值2)… {}直接上代码吧:#include "stdafx.h"#include<string>#include<iostream>using namespace std;class Person {public...原创 2020-02-29 20:13:04 · 116 阅读 · 0 评论 -
C++核心7:深拷贝与浅拷贝
这一节就比较简单了。这一节我的理解,还是对堆区栈区的一个具象化。闲话不多说,安排。浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作直接上代码:class Person {public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" << endl; } //有参构造函数 Person(int a...原创 2020-02-29 20:04:00 · 218 阅读 · 2 评论 -
C++核心6:对象的初始化和清理
首先我们要引入一个概念,叫做构造函数和析构函数。生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全。C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。对象的初始化和清理是两个非常重要的安全问题,一个对象或者变量没有初始状态,对其使用后果是未知的。同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。...原创 2020-02-29 19:50:20 · 178 阅读 · 0 评论 -
C++核心5:封装
C++面向对象的三大特性为:封装、继承、多态对象:属性和行为。封装的意义:1.将属性和行为作为一个整体,表现生活中的事物2.语法: class 类名{ 访问权限: 属性 / 行为 };例1:设计一个圆的类,要求这个圆的周长const double PI = 3.14;class circle{ /*访问权限*/public: /*属性*/ int circle_r; /*...原创 2020-02-26 17:54:34 · 157 阅读 · 0 评论 -
C++核心4:引用
1、引用的基本用法:作用:给变量起别名语法:数据类型 &别名 = 原名实质:封装的指针void test01() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 1...原创 2020-02-26 17:46:34 · 206 阅读 · 0 评论 -
C++核心3:new操作符
C++中利用new关键字在堆区开辟数据由程序员手动开辟,手动释放,释放利用操作符delete利用new创建的数据,会返回该数据对应的类型的指针#include <iostream>#include<string>using namespace std;int* func(){ /*堆区创建一个整型数据*/ int* a = new int(10); /*...原创 2020-02-26 17:39:28 · 167 阅读 · 0 评论 -
C++核心2:栈区和堆区
栈区:由编译器自动分配释放,存放函数的参数值,局部变量等不要返回局部变量的地址,栈区开辟的数据由编译器自动释放堆区:由程序员分配释放,若程序员不释放,程序结束时由操作系统回 在C++中主要利用new在堆区开辟内存#include<string>#include<iostream>using namespace std;int * func01(){ in...原创 2020-02-26 17:37:36 · 221 阅读 · 0 评论 -
C++核心1:内存
C++内存分区:1、代码区:存放函数体的二进制代码。存放CPU的机器指令。代码区是共享的——对于频繁的被执行程序,只需要保存一份代码代码区是只读的——防止程序意外的修改命令2、全局区:存放全局变量和静态变量以及常量。全局变量和静态变量存放在此。全局区还包含了常量区, 字符串常量和其他常量也存放在此。该区域的数据在程序结束后由操作系统释放。3、栈区:编译器自动进行分配释放,存放函数...原创 2020-02-26 17:33:23 · 142 阅读 · 0 评论
分享