
C++学习笔记
文章平均质量分 53
仅用来作为个人学习使用
我不会c语言
这个作者很懒,什么都没留下…
展开
-
C++ 手写vector
#include<iostream>using namespace std;template<typename T>class vector{private: int __capacity,__size; T* __a;public: vector():__capacity(0),__size(0),__a(nullptr){ cout<<"默认构造\n"; } vector(const vector&a原创 2021-06-13 15:03:30 · 789 阅读 · 0 评论 -
c++11 emplace_back
emplace_back()是c++11引入的一个新特性,它是用来向STL容器中丢入元素到容器尾部的,那么它对比push_back()有哪些优化呢?写一个demo如下:为了防止vector扩容带来的影响,所以直接先reserve出10个位置#include<bits/stdc++.h>#include<time.h>using namespace std;class A{ public: A(int b):a(b){ cou原创 2021-05-20 21:50:40 · 406 阅读 · 0 评论 -
C++为什么要将析构函数设为虚函数
首先我们知道虚函数是实现运行期的多态的。根据类型兼容原则,在需要基类指针的地方,都可以用派生类的指针去代替。如下代码,就实现了多态。#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N=2e5+50;int a[N];class A{ public: A(){ } ~A(){ } virtual原创 2021-02-18 00:51:13 · 457 阅读 · 0 评论 -
C++常见面试题
文章目录c++编译的过程指针跟引用的区别栈和堆的区别new和malloc的区别deine和const的区别const和static的用法conststaticconst和static在类中的注意事项c++编译的过程这是一个超链接编译预处理、编译、汇编、链接指针跟引用的区别1.指针可以为空,引用初始化必须绑定对象2.指针可以改变指向的地址,引用绑定后不能改变绑定的对象3.指针可以多级指向,引用不可以4.指针占内存,引用不占内存(有待证实)栈和堆的区别1.栈是系统自动分配的,而堆是程序员自原创 2021-02-11 19:16:42 · 1854 阅读 · 0 评论 -
C++ 多态
多态的概念多态是指在同样的消息在被不同类型的对象接收时导致不同的行为。这里的消息是指对类的成员函数的调用,不同的行为是指不同的实现,也就是调用了不同的函数。简单的例子就是运算符,比如运算符的"+",可以实现整型与整型、浮点与浮点之间的加法。如果是不同类型的变量相加,比如整型和浮点,就先将整型转为浮点在相加。多态的类型面向对象的多态性可以分为四类:重载多态、强制多态、包含多态、参数多态。前两种统称为专用多态,后两种统称为通用多态。①重载多态:包含普通函数的重载、类的成员函数的重载、运算符的重载。原创 2021-02-02 19:48:34 · 178 阅读 · 0 评论 -
C++ 函数重载
函数重载对于一些具有相同功能的函数,我们希望他们的函数名字希望都一样,但是参数的类型和个数不一样,这怎么办呢?这就用到了函数重载。重载函数是用来实现功能类似,而数据类似不同、或者数据个数不同的问题下面这个是重点两个重载函数必须在下列一个或两个方面有所区别:1、函数的参数个数不同。2、函数的参数类型不同或者参数类型顺序不同,即两个重载函数的形参部分必须至少满足上述条件之一,与返回值类型无关其实笔者的个人理解就是,对于两个同名函数,对他们的参数表按顺序对比,只要有一个数据类型不同或者一个有一个没原创 2021-02-01 17:52:31 · 358 阅读 · 0 评论 -
C++ 继承
1、类的继承类的继承指的是,新的类从已有的类中获得已有的特性。新的类成为派生类,也叫子类,被继承的类叫做基类,也叫做父类。下面是继承的基本格式class 派生类:继承方式 基类1,继承方式 基类2,......,继承方式 基类n{}在C++中,允许多继承下面代码段是D以公有继承的方式继承了A,以私有继承的方式继承了B,以保护继承的方式继承了C三种继承方式的说明会在下文提到class A{};class B{};class C{};class D:public原创 2021-01-29 21:55:51 · 251 阅读 · 0 评论 -
C++ 友元
友元关系的引入考虑一个问题,对于一个Point类,用来保存一个坐标,即它有两个实数型变量是它的坐标,那么我们现在想要计算点与点之间的距离,这个函数要放在哪里比较合适?①放在类中作为类的成员函数吗?但是这个函数不属于单独的一个点,也不属于Point类。②放在类的外面定义为普通函数吗?但是这样就体现不了这个函数与Point类的关系,并且不能直接访问点的坐标(私有成员)所以这里就引入了友元关系友元关系:提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制也就是说通过友元关系,原创 2021-01-27 15:49:14 · 174 阅读 · 0 评论 -
C++ 析构函数
1、析构函数析构函数,其实就是构造函数的相反操作,构造函数是创建对象时候,用来给对象的成员数据赋值的,而析构函数是用了清理对象的。2、析构函数的特点①析构函数就是位取反运算符+类名表示。②构造函数可以有多个,而析构函数只能有一个,不可重载,不能有参数。③与构造函数相同,析构函数没有返回值。如果没有显式写出析构函数,编译器会自动加上一个默认的析构函数,如果写了的话,就不会再加。#include<bits/stdc++.h>using namespace std;class Poin原创 2021-01-25 17:21:15 · 2656 阅读 · 0 评论 -
C++ 构造函数
1、默认构造函数以及构造函数的重载默认构造函数,即创建对象时,会自动执行的函数。如果不写的话也是可以的,编译器在执行时候发现类中没写构造函数,会自动给类中加上一个无参的构造函数,即默认构造函数。但如果你自己编写了构造函数的重载,编译器识别到了存在构造函数,那么空参的构造函数就不会自动给你加上去, 所以建议手动写上默认构造函数。#include<bits/stdc++.h>using namespace std;class A{ //类的外部接口 public:原创 2021-01-24 16:42:30 · 476 阅读 · 0 评论