C++
何小柒(qi)~
烫好头发就不要后悔,笑,就真诚的笑,买了就不要比价格,做个坦坦荡荡的女孩吧!
展开
-
C++:智能指针
智能指针原创 2021-12-05 15:17:20 · 808 阅读 · 0 评论 -
C++:泛型算法和函数对象
泛型算法1.copy#include<iostream>#include<algorithm>#include<functional>#include<vector>using namespace std;//copytemplate<typename IT,typename INSERT_IT>//顺序型迭代器&插入类型迭代器//void mcopy(IT first, IT last, INSERT_IT inser原创 2021-11-30 07:26:42 · 143 阅读 · 0 评论 -
C++:STL迭代器
11_23 STL迭代器STL迭代器顺序迭代器—遍历型迭代器iterator 正向迭代器reverse_iterator 反向迭代器#include<iostream>#include<vector>using namespace std;//函数模板,正向打印容器内元素template<typename CON>void show(CON& src){ typename CON::iterator it =原创 2021-11-25 13:33:17 · 615 阅读 · 0 评论 -
C++:STL容器
Day11_18:STL容器STL容器1.近容器string 字符串int arr[] 数组2.顺序容器(模板)vector list deque3.容器适配器stack queue4.关联容器set 集合,数据有序,不允许重复,去重,底层是红黑树,增删改查时间快map 映射表,按照key有序,底层实现红黑树,不允许重复multiset 可以有重复元素multimap 允许键重复string和关联容器有find函数,顺序容器没有find函数#include<i原创 2021-11-23 19:01:58 · 815 阅读 · 0 评论 -
C++:虚继承和菱形继承
11_16虚继承&菱形继承1.菱形继承(举例子说明)(1)菱形继承引入的问题:公共父类在子对象中存在多个实例(2)菱形继承的解决:虚继承(3)虚继承的逻辑:被虚继承的类会变成虚基类,虚基类在子对象中存放在vbtable,原本应该存储该父类对象的位置替换为vbptr,vbptr指向vbtable中虚基类实例的位置,虚基类在子类中只会有一个实例的存在(c1L /d1reportSingleClassLayoutD.\mian.cpp > 1.txt)注意:虚基类在子类构造时候会被当作类先原创 2021-11-22 19:55:25 · 458 阅读 · 0 评论 -
C++:多态
11_11多态1.多态静多态和动多态静多态:编译时期的多态,被称为早绑定地址动多态:运行时期的多态,又被称为晚绑定地址例子:继承中的多态,重载,模板隐藏:子类中的成员会隐藏父类中同名的成员。覆盖:父类中对应的相同函数(同返回值,同函数名,同参数列表)会被传递为虚函数2.动多态产生条件使用指针或者引用调用虚函数就会产生动多态,对象必须完整完整对象:构造函数执行完毕,析构函数还未开始3.动多态的过程动多态调用过程:(1)使用指针或者引用调用虚函数(2)在对象中找到vfptr(3)根原创 2021-11-21 11:33:39 · 1187 阅读 · 0 评论 -
C++:继承和多态(1)
11_9继承和多态1.类与类之间的关系(1)友元(2)组合class A{};class B{public: A a;};(3)嵌套:一个类声明另一个类,class A{ class B { public: A a; };};(4)代理:一个类接口是另一个类接口的子集,一个类的功能需要依赖另一个类。(5)继承:(基类和派生类)子类无法访问父类的私有成员class Person{public: void eat() { cout <<原创 2021-11-18 18:55:21 · 562 阅读 · 0 评论 -
C++:面向对象(总结+补习)
11_7面向对象三大特性:封装 继承 多态c语言:数据:生命周期,一般存在于全局变量,不存在于函数中原创 2021-11-14 20:08:36 · 809 阅读 · 0 评论 -
C++:模拟实现vector
11_4模拟实现vector1.string——近容器vecotr容器(类似于数组)void resize();//长度和实际长度(实际数据发生变化)void reserve();//扩容(只改变长度)2.使用模板实现vector(1)mvector.h#ifndef MVECTOR_H#define MVECTOR_Htemplate<typename T>class Mvector{public: Mvector() { _arr = NULL; _le原创 2021-11-04 22:33:30 · 621 阅读 · 0 评论 -
C++:模板(函数模板和类模板)
11_21.函数模板函数重载:函数名相同,参数列表不同。静多态,编译时期的多态。C++种产生函数符号依赖于函数名和参数列表。(1)把类型当作参数传入函数中,模板不可以直接运行,函数模板会在编译器根据使用情况生成对应的函数指令。(2)模板不编译,模板生成的函数指令是需要编译的,模板中的语法错误会在生成对应的指令时候编译出错误,(3)函数模板有类型自推的能力,使用函数模板可以不用传模板类型参数(cout<<typeid(T).name()<<endl)(4)函数模板的特例化:原创 2021-11-03 18:42:45 · 444 阅读 · 0 评论 -
C++:mstring类的继续实现——迭代器
1.程序目的——模拟实现:把现实中的事物当作数据放到程序中前端——展现数据网络——传输数据服务器——处理数据数据库——存储数据数据操作——增删改查2.迭代器定义:指向容器内部数据的一个指针,本质是一个对象存在意义:...原创 2021-10-30 19:44:51 · 216 阅读 · 0 评论 -
C++:mstring类的拷贝以及其他成员方法
10_261.mstring.h#ifndef MSTRING_H#define MSTRING_H#include<iostream>#include<mutex>using namespace std;#define MSTRING_MORE_SIZE sizeof(int)#define DEFEALT_LEN (10+MSTRING_MORE_SIZE)class Mstring{public: Mstring(const char* str原创 2021-10-29 13:46:27 · 199 阅读 · 0 评论 -
C++:大数加减实现,mstring类的实现
10_21大数加减:bignum.h#pragma once#ifndef BIG_NUM_H#define BIG_NUM_H#include<iostream>#include<string>using namespace std;class BigNum{public: BigNum(int num = 0);//空的构造函数 BigNum(const string& str);//string构造 BigNum(const BigNum&原创 2021-10-27 19:50:03 · 204 阅读 · 0 评论 -
C++:运算符重载
10_191.运算符重载给自定义类型写一个成员方法,让指定的运算符按照我们的希望的逻辑执行运算一元运算符:*(解引用)二元运算符:+ - = && ||三元运算符::?ostream为一个类(只能有一个对象),cout为一个对象...原创 2021-10-25 16:04:33 · 65 阅读 · 0 评论 -
C++:数组和链表的成员方法表示
(1)node.h#ifndef NODE_H#define NODE_H#include<iostream>using namespace std;class List;void show(List& list);class Node{public: Node(int val = int()) { _val = val; _next = NULL; _pre = NULL; } friend class List;//友元类 friend...原创 2021-10-16 13:17:21 · 158 阅读 · 0 评论 -
C++:公有和私有,const,static
10_12公有和私有1.公有和私有性公有数据成员:对外界具有读写权限私有数据成员:除了自己类内部不可以使用,C++中默认权限为private权限选择,必须要对外界提供,就放在public,其他的都放在private一般成员属性都放在Private,如果外界需要使用就提供公有接口2.初始化和赋值初始化:在定义时候给值,内存划分时候给值赋值:定义之后给值,内存划分之后给值3.初始化列表:①只有构造函数有初始化列表②必须初始化的成员需要放在初始化列表③在本对象之前需要完成的动作,必须放在初原创 2021-10-12 22:59:15 · 1660 阅读 · 0 评论 -
C++:析构函数,构造函数,运算符重载
10_7面向对象1. 面向对象编程语言四大特性:抽象 封装 继承 多态2. this指针:指向本对象的指针,普通成员方法的第一个参数默认加上this指针,在普通成员方法内使用到普通成员的地方加上this指针,在调用成员方法的时候加上参数this指针,this指针为常量,不允许改变,编译时期加上this指针3. 构造函数:对象调用函数的时候默认定义的函数,当对象进行构造的时候默认调用的成员方法。构造函数的函数名和类名一致,没有返回值。如果没有实现构造函数,系统会默认生成一个默认构造函数。默认构造函数-原创 2021-10-08 13:05:52 · 172 阅读 · 0 评论 -
C++:指针,常量,变量
10_4指针1.指针和数组名的区别?数组名-地址-常量(计时数)指针-变量2.变量和常量区别?b = *p(下地址,在p的内存中将存储的地址拿出,再去拿出的地址中取出存储的数据,给变量赋值都是解引用)3.const关键字(1)常关键字,常变量(不能作为左值)直接改变值不允许,不能泄漏常量的地址给非常量的指针,必须使用指针取地址可以修改(2)为什么常量必须初始化?C++中的常量在编译期将常量的值直接写入到常量的使用点常量的初始化必须使用常量,否则改量会退化为常变量Int* p=(int*原创 2021-10-04 23:25:25 · 96 阅读 · 0 评论 -
C++:函数
9_27函数默认值参数1.在函数声明或者定义的时候,给定默认参数,如果实参传递时候,不给形参传值,则会按照默认值传值2.函数参数的默认值是在编译期生成指令时候直接生成入参指令3.函数参数的默认值只能传递常量,默认值参数只能从右向左依次赋值,不能跳过4.函数的默认值参数在同一作用域只能赋值一次,不能重复赋值5.因为函数参数的默认值是在编译期带入的,所以函数的默认值只在本文件生效Inline(内联函数)1.内联函数:(Release版本)在调用内联函数时候,该函数会在调用点将代码展开(编译时期)原创 2021-09-28 00:03:14 · 84 阅读 · 0 评论