c++
walkerrev_ll
一条酸菜鱼,又酸又菜又多余
展开
-
C++(STL)学习(二)—string容器
基本概念string类,定义在头文件<string>中String和C风格字符串相比:Char *是一个指针,String是一个类String封装了char* ,管理这个字符串,是个 char*类型的容器String封装了很多使用的成员方法查找、拷贝、删除、替换、插入不用考虑内存释放和越界String管理Char*所分配的内存,每一次string的复制,取值都由str...原创 2020-03-22 21:02:24 · 138 阅读 · 0 评论 -
C++(STL)学习(一)
基本概念STL(标准模板库)STL从广义上分为:容器、算法、迭代器,容器和算法之间通过迭代器进行无缝链接。STL六大组件:容器、算法、迭代器、仿函数、适配器、空间配置器容器:各种数据结构(类模板)算法:各种常用的算法(函数模板)迭代器:所有的容器都有自己的迭代器容器序列式容器关联式容器算法质变算法:运算过程中改变区间内的元素的内容,例如拷贝,替换,删除等非质变算法:运算过程...原创 2020-03-21 20:46:40 · 125 阅读 · 0 评论 -
C++学习(十八)—模板(二)
模板机制编译器并不是把函数模板处理成能够处理任何类型的函数函数模板通过具体类型产生不同的函数(产生了模板函数)编译器会对函数模板进行两次编译,在声明的地方对模板代码本身进行编译,在调用的地方对参数替换后的代码进行编译。模板的局限性模板并不是真正的通用的代码,对于一些自定义数据类型,模板有时候不能实现效果可以通过具体化实现对自定义数据类型进行操作。#include<iostr...原创 2020-03-13 20:54:39 · 106 阅读 · 0 评论 -
C++学习(十七)—模板(一)
函数模板基本用法函数模板template 告诉编译器T是万能数据类型,下面紧跟着的函数或者类中出现T类型,不要报错调用模板函数自动类型推导 必须让编译器推导出一致T类型才可以使用模板显式指定类型 显式的告诉编译器T的类型模板必须要指出T的类型,才可以使用#include<iostream>using namespace std;void myswapInt(...原创 2020-03-10 21:05:41 · 145 阅读 · 0 评论 -
C++学习(十六)—多态(二)
多态的好处多态的好处扩展性提高 组织性强 可读性强如果父类中有了虚函数,子类并没有重写父类的虚函数,那麽这样的代码是毫无意义的如果子类不重写父类虚函数,那麽没有用到多态带来的好处,而且内部结构还变得更为复杂#include<iostream>using namespace std;class calculator{public: int getResul...原创 2020-03-09 23:35:21 · 115 阅读 · 0 评论 -
C++学习(十五)—多态(一)
多态多态分类静态多态:运算符重载 函数重载动态多态:父子之间继承 + 虚函数动态多态满足的条件父类中有虚函数子类重写父类的虚函数父类的指针或者引用指向子类的对象注意:子类重新实现父类中的虚函数,必须返回值、函数名、参数一致才称为重写 子类在做重写的时候,可以不加关键字virtual多态原理当父类中存在虚函数后,内部发生结构变化多了指针 vfptr 虚函数表指针—指向...原创 2020-03-09 18:13:54 · 129 阅读 · 0 评论 -
C++学习(十四)—继承(二)
多继承class子类:继承方式 父类1,继承方式 父类2当两个或多个父类中,有同名的成员 被子类继承后,调用时候需要加作用域进行#include<iostream>using namespace std;class Base1{public: Base1() { this->m_a = 10; } int m_a;};class Base2{...原创 2020-03-08 11:55:24 · 151 阅读 · 0 评论 -
C++学习(十三)—继承(一)
继承的基本语法语法:class子类:继承方式 父类父亲:基类子类:派生类继承的作用:可以将少重复代码的出现继承方式公共继承父类中 public到子类中 public父类中protected 到子类中 protectded父类中private到子类中 访问不到保护继承父类中 public到子类中 protectded父类中protected 到子类中 protec...原创 2020-03-07 09:48:43 · 144 阅读 · 0 评论 -
C++练习(二)—案例(二)
字符串封装MyString.h#pragma once#include<iostream>using namespace std;class MyString{public: friend ostream & operator<<(ostream &cout, const MyString &str); friend istrea...原创 2020-03-05 21:03:15 · 160 阅读 · 0 评论 -
C++学习(十二)—运算符重载(二)
智能指针用途:用来托管堆区创建的对象的释放#include<iostream>using namespace std;class Person{public: Person(int age) { this->m_age = age; cout << "Person的有参函数构造" << endl; } void showag...原创 2020-03-04 17:52:57 · 127 阅读 · 0 评论 -
C++学习(十一)—运算符重载(一)
加号运算符重载对于内置数据类型,编译器知道如何进行运算但是对于自定义数据类型,编译器并不知道该如何运算利用运算符重载可以解决这个问题注意:运算符重载也可以发生函数重载#include<iostream>using namespace std;// 加号运算符重载class Person{public: Person() {}; Person(int a, ...原创 2020-03-03 21:27:04 · 126 阅读 · 0 评论 -
C++练习(一)—案例(一)
数组类的封装Myarray.h#pragma once#include<iostream>using namespace std;class My_Array{public: // 默认构造函数 My_Array(); // 有参构造函数 My_Array(int capacity); // 拷贝构造函数 My_Array(const My_Ar...原创 2020-03-02 21:41:22 · 280 阅读 · 0 评论 -
C++学习(十)—类和对象(五)
类的大小#include<iostream>#pragma pack(show) // 对齐模式using namespace std;class Person{public: int a; // 成员属性 算在类的大小中 // 成员函数 并不算在类的大小中 void f() { } static int b; // 静态成员变量 ...原创 2020-03-01 14:45:02 · 119 阅读 · 0 评论 -
C++学习(九)—类和对象(四)
new和delete运算符#include<iostream>using namespace std;// malloc 和 new区别// new和delete是一个运算符 malloc和free是一个库函数// malloc 返回值是 void * new返回的是new出来的对象的指针// malloc 需要判断是否开辟成功 而new内部做好了操作(...原创 2020-02-29 21:53:17 · 163 阅读 · 1 评论 -
C++学习(八)—类和对象(三)
浅拷贝与深拷贝#include<iostream>#include<string>using namespace std;// 系统提供的拷贝函数,只会做简单的值拷贝// 如果类中有属性开辟到堆区,那么在释放的时候,由于浅拷贝问题导致堆区内容会重复释放程序down掉 利用深拷贝 解决浅拷贝带来的问题class Persion{public:...原创 2020-02-28 14:11:41 · 104 阅读 · 0 评论 -
C++学习(七)—类和对象(二)
构造函数和析构函数#include<iostream>using namespace std;class MYclass{public: // 1、构造函数的写法 // 没有返回值 也不写void 函数名与类名相同 // 由编译器自动调用 不需要手动调用;而且编译器只会调用一次 MYclass() { cout << "MYclas...原创 2020-02-27 22:41:49 · 84 阅读 · 0 评论 -
C++学习(六)—类和对象(一)
类的封装#include<iostream>using namespace std;class Persion{public: char p_name[20]; int p_age; void PersonEat() { cout << p_name << "在吃饭" << endl; }private: // 私有...原创 2020-02-26 19:35:54 · 128 阅读 · 0 评论 -
C++学习(五)—函数(二)
函数重载#include<iostream>using namespace std;// 函数重载 // 满足函数重载条件// 1、作用域必须相同// /*class Teacher{ void f() {}; 成员函数,不能作为重载的条件};*/// 2、函数名称要相同// 3、函数参数类型不同或者个数不同或着顺序不同void f(){...原创 2020-02-26 14:11:16 · 76 阅读 · 0 评论 -
C++学习(四)—函数(一)
宏函数和内联函数#include<iostream>using namespace std;#define MYADD(x,y) ((x)+(y))// 缺陷1:为了保证运算的完整性,需要加小括号修饰void test01(){ int a = 10; int b = 20; // int c = MYADD(a, b)*20; // cout <&...原创 2020-02-25 21:54:37 · 210 阅读 · 1 评论 -
C++学习(三)—基础(三)
引用引用基础#include<iostream>using namespace std;/* 1、引用的基本语法 引用:给一段内存空间起别名 语法:类型 & 别名 = 原名 */void test1(){ int a = 10; int &b = a; b = 20; cout << "a = " << a &...原创 2020-02-24 10:08:28 · 96 阅读 · 0 评论 -
C++学习(二)——基础(二)
C++对C语言的增强以下面的代码最为例子C语言:#include<stdio.h>#include<stdlib.h>#include<string.h>/* 1、全局变量检测增强 在C语言中,这段代码是可以编译通过的int a;int a = 10 *//* 2、函数检测增强 在C语言中,这段代码是可以编译通过的f(a, b){ ...原创 2020-02-23 14:41:15 · 541 阅读 · 0 评论 -
C++学习(一)——基础(一)
上一周把C语言简单的复习了一下子,收获还是蛮大的,但C语言中还有许多问题,希望在以后的练习中能够得到强化,从这周就开始了对C++语言的学习。一、概述1、C++简介1.C++语言可以认为是对C语言的扩展,因此C++可以说是C语言的超集,这意味着任何有效的C语言程序都是C++程序。C++程序可以使用原有的C语言库。2.C++语言在C语言的基础上添加了面向对象编程和泛型编程的支持。C++语言继承...原创 2020-02-23 00:52:12 · 151 阅读 · 0 评论