![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
MIIEo
到一个好的地方,心态要保持好,因为第一名第二名这个事情是没有意义的。名次只是给你一些信息,但是大家的成就不是和别人竞赛,真正是和自己竞赛。一个人他到最后盖棺论定的时候,所有世界上其他人对你的评价都是不重要的,最重要的评价只有一个人,你自己摸着你的胸脯问,我在这个世界上,是不是尽了我最大的力量,发挥出我最大的光和热。一个人假如说能够有信心的说我做到了这一点,那么我觉得你就是最成功的最成功的人。——姚老师
展开
-
C++学习曲线陡峭之处
字符串处理太鸡肋,连 split 都没有。直接就是正则表达式,特么到底是得有多牛皮才能用好 C++ ?多线程库部分,没有信号量 semaphore。看着java的信号量,真的很眼馋。并发编程的思考标准库虽然提供了同步互斥机制,但如何检测这些机制是不是用对了?尤其是在复杂的多线程场景中时。...原创 2020-08-16 17:39:47 · 670 阅读 · 0 评论 -
难理解易崩溃代码的展示及症结分析
算法题,唯一的解题方法是,找规律,写代码。当循环的终止条件和数组内容相关的时候,而且数组内容随着每一轮循环都在改变的时候,容易死循环。如下中的qsort中的while(x<=y){...}这个循环。如果把x++;y--;删掉,则在输入是5,表示待排序数字的数目,待排序数字设置为 1 5 5 2 3,这种情况的时候,就会出现死循环。#include<bits/stdc++.h>using namespace std;int a[100005];int n;//左右指针法 voi原创 2020-08-02 23:01:36 · 133 阅读 · 0 评论 -
Effective C++(搬运、待续)
本博客来源视C++为一个语言联邦(C、Objective-Oriented C++、Template C++、STL)宁可以编译器替换预处理器(尽量以const、enum、inline替换#define)尽可能使用const确定对象被使用前已被初始化(构造时赋值(copy构造函数)比default构造后赋值(copy assignment)效率高)了解C++默默编写并调用了哪些函数(编译器暗自为class创建default构造函数、copy构造函数、copy assignment操作符、析构函数)转载 2020-07-31 09:19:01 · 113 阅读 · 0 评论 -
内存分配和管理、智能指针、强制类型转换运算符、运行时类型信息(RTTI)
文章目录内存分配和管理malloc、calloc、realloc、allocamalloc、freenew、delete定位newdelete this合法吗?如何定义一个只能在堆上(栈上)生成对象的类?只能在堆上只能在栈上智能指针shared_ptrweak_ptrunique_ptrauto_ptrauto_ptr 与 unique_ptr 比较强制类型转换运算符static_castdynamic_castconst_castreinterpret_castbad_cast运行时类型信息(RTTI)转载 2020-07-30 13:38:09 · 176 阅读 · 0 评论 -
虚函数、纯虚函数、虚析构函数、虚函数指针、虚函数表、虚继承、虚基类
文章目录虚析构函数纯虚函数虚函数、纯虚函数虚函数指针、虚函数表目标文件存储结构虚继承虚继承、虚函数模板类、成员模板、虚函数抽象类、接口类、聚合类本文内容是博客内容的纯手打,目的增强记忆,感谢博主虚析构函数虚析构函数是为了解决基类的指针指向派生类对象,并用基类的指针删除派生类的对象。虚析构函数使用class Shape{public: Shape(); //构造函数不能是虚函数 virtual double calcArea(); virtual ~Shape(); //虚析转载 2020-07-29 10:07:20 · 200 阅读 · 0 评论 -
enum枚举类型、decltype、引用、宏、成员初始化列表、initializer_list列表初始化
文章目录enum枚举类型decltype引用宏成员初始化列表initializer_list列表初始化本文参考博客,感谢博主enum枚举类型限定作用域的枚举类型enum class open_modes{intput, output, append};不限定作用域的枚举类型enum color{red, yellow, green};enum {floatPrec=6, doublePrec=10};decltypedecltype关键字用于检查实体的声明类型或表达式的类型及值分类。语转载 2020-07-28 12:51:00 · 292 阅读 · 0 评论 -
C++面向对象,封装、继承、多态
文章目录面向对象封装继承多态C++多态分类及实现子类型多态参数多态重载多态强制多态静态多态(编译期/早绑定)动态多态(运行期/晚绑定)总结本文参考博客有博客1 和 博客2,以及C++primer部分内容,感谢面向对象面向对象程序设计(Object-oriented programming,OOP)是种具有对象概念的程序编程典范,同时也是一种程序开发的抽象方针。面向对象三大特征:封装、继承、多态封装分离类的实现与接口,从而隐藏了类的实现细节。在C++语言中,通过把实现部分设为private完成封转载 2020-07-28 12:47:11 · 311 阅读 · 0 评论 -
牛客C++错题笔记整理
动态绑定是面向对象程序设计语言中的一种机制。这种机制实现了方法的定义与具体的对象无关,而对方法的调用则可以关联于具体的对象。面向对象有三种特性:封装、继承、多态。其中多态性有两种,一种是依靠 函数重载 实现的 静态绑定 ,一种是依靠 虚函数 实现的 动态绑定。C++中的纯虚函数,下面说法均正确:子类中必须覆盖基类的纯虚函数含有纯虚函数的类不能被实例化基类的纯虚函数没有函数体含有纯虚函数的类一定是抽象类下列哪种方式可以完成float a与0的比较( )二维字符数组的定义:#inc原创 2020-07-27 17:48:33 · 102 阅读 · 0 评论 -
位域,extern “C“,struct 和 typedef struct,struct 和 class,union 联合,friend友元类,using,::范围解析运算符
文章目录位域extern "C"struct 和 typedef structC++中struct 和 classunion联合explicit(显式)关键字friend友元类和友元函数using::范围解析运算符本文为学习博客的学习笔记,感谢博主位域Bit mode: 2; //mode占2位类可以将其数据成员定义为位域(bit-field),在一个位域中含有一定数量的二进制位。当一个程序需要向其他程序或硬件设备传递二进制数据时,通常会用到位域位域在内存中的布局是与机器有关的位域的类型必须转载 2020-07-27 14:52:28 · 601 阅读 · 0 评论 -
this 指针,inline 内联函数,volatile关键字,assert宏,sizeof,#pragma pack(n)
文章目录this指针inline内联函数volatile关键字assert()sizeof()#pragma pack(n)本文是对该博客的学习笔记,鸣谢博主总结:this指针是类对象成员函数在被调用的时候,隐式地传递给成员函数的,用于在成员函数体中给类对象的成员变量。inline是建议编译器做内联,注意是建议,用于提高程序运行效率volatile修饰的变量不会被编译器优化,volatile和const一样是类型修饰符sizeof对数组,得到整个数组所占空间大小; sizeof对指针,得到指针转载 2020-07-26 18:53:28 · 147 阅读 · 0 评论 -
C/C++中 static 的作用
static作用来自博客修饰普通变量,修改变量的存储区域和生命周期,使变量存储在静态区,在main函数运行前就分配了空间,如果有初始值就用初始值初始化它,如果没有初始值系统用默认值初始化它修饰普通函数,表明函数的作用范围,仅在定义该函数的文件才能使用。在多人开发项目中,为了防止与他人明明空间里的函数重名,可以将函数定位为static修饰成员变量,修饰成员变量使所有的对象只保存一个该变量,而且不需要生成对象就可以访问该成员修饰成员函数,修饰成员函数使得不需要生成对象就可以访问该函数,但是在static转载 2020-07-26 16:51:19 · 273 阅读 · 0 评论 -
C++中的const
const 的作用是限制其他程序对指针、对象、变量等的访问权限,由可读可写变成只读,避免意想不到的错误发生修饰变量,说明变量不可以被改变;修饰指针,分为指向常量的指针(pointer to const),和自身事常量的指针(常量指针,const pointer)修饰引用,指向常量的引用(reference to const),用于形参类型,即避免了拷贝,又避免了函数对值的修改修饰成员函数,说明该成员函数内不能修改成员变量const指针和引用指针指向常量的指针自身是常量的指针引用指向常量的原创 2020-07-26 10:38:56 · 63 阅读 · 0 评论 -
C实现C++类
Stack Overflow链接在此以下两个代码都可以运行我自己的代码#include<stdio.h>typedef struct base{ void (*func)(int num);}base;void afunc(int num){ printf("afunc is running: %d\n\n", num);}void aInit(base* a){ a->func = afunc;//效果与 a->func = &afunc;等同,为什原创 2020-07-25 23:01:52 · 345 阅读 · 0 评论