![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
hello_ape
一只努力毕业拿到BAT offer的程序猿
展开
-
【c++】c++中,子类是否可以重载父类的函数
#include "iostream"using namespace std;class base{ //定义一个简单的父类public:void print(){ //简单的打印函数cout << "base print" << endl;}};class child:public base {public:void print(){ /...原创 2019-03-15 10:59:58 · 3164 阅读 · 1 评论 -
【C++】默认构造函数的分析
如果没有任何用户定义的构造函数,会隐式申明一个默认构造函数,但是这个默认构造函数是无用的。 只有当编译器需要的时候才会产生一个默认构造函数。 只有下面的四种情况,才会产生有用的默认构造函数 1、如果一个类没有任何构造函数,但是这个类有一个类成员对象,这个类成员对象含有默认构造,那么这个类的隐式默认构造就是有用的。 如果用户定义了默认构造函数,并且...原创 2019-05-27 13:54:07 · 214 阅读 · 0 评论 -
【C++】构造函数和默认构造函数
构造函数是指用来控制类对象的初始化的过程,负责初始化类的数据成员。构造函数是这一类函数的统称。用来控制对象的默认初始化过程的构造函数,称为默认构造函数,默认构造函数无需任何实参。如果我们没有声明任何用户构造函数,那么此时将会有一个隐式构造函数被声明,这个构造函数称为合成的默认构造函数。但是这个隐式构造函数是无用的。看下面这个例子我们发现此时对象t2的成员并没有被初始化,因为此时并...原创 2019-05-27 10:44:03 · 322 阅读 · 0 评论 -
c++中chrono学习
chrono是一个时间库,可以方便的用来计时,测量一些性能。在chrono中,有三个概念,分别是:duration、time_point和Clocks。duration从单词上可以看出,表示一段的时间。template <class Rep, class Period = ratio<1> > class duration;rep 和period之间存...原创 2019-08-14 16:04:08 · 851 阅读 · 0 评论 -
c语言中存储类型和static关键字
变量的存储类型决定变量何时创建、何时销毁、值保持多久。 有三个地方可以存储变量:普通内存、运行时堆栈、硬件寄存器 缺省存储类型取决于变量的声明位置。 代码块之外申明的变量存储于静态内存中。这些变量也称为静态变量。(也就是具有文件作用域的标识符) 静态变量在程序运行之前创建,在程序的执行期间始终存在,始终保持原来的值,除非赋给它另外的值或者程序结束...原创 2019-05-07 11:22:42 · 828 阅读 · 0 评论 -
c语言中的链接属性
如果程序由多个源文件组成,在不同的源文件中,出现多个同名的标识符,该怎么处理?这个时候需要考虑标识符的链接属性。标识符的链接属性决定如何处理不同文件中出现的标识符。一共有三种链接属性,分别是:external(外部),internal(内部),none(无)。none没有链接属性的标识符被当作单独的个体。internal属于internal的标识符在同一个文件内的所有声明都是指向同...原创 2019-05-07 11:17:48 · 465 阅读 · 0 评论 -
c语言中作用域
当变量在程序中的某个部分被声明时,它只有在程序的一定区域被访问。这个区域由标识符(变量)的作用域决定。在c语言中,一共有四种作用域,分别是代码块作用域、文件作用域、原型作用域和函数作用域。代码块作用域:由{} 标识的区域称为代码块作用域。在代码块内部声明的标识符都具有代码块作用域。各个代码块的作用域不重叠。 { int i = 10; int j;...原创 2019-05-06 20:54:16 · 1439 阅读 · 0 评论 -
【c++】虚函数讲解
虚函数的作用当涉及继承关系的时候,对于某些函数,基类和派生类希望有各自的版本,那么基类可以将函数声明为虚函数。对于基类而言,其中的成员函数可以分为两种,一种希望派生类直接继承;第二种希望派生类有自己的版本,此时应当声明为虚函数。对于派生类而言,并不是一定需要重写从基类继承来的虚函数。如果重写虚函数,那么派生类将有自己的版本,如果不重写,那么将使用基类的版本。override关键字如...原创 2019-04-12 11:25:24 · 153 阅读 · 0 评论 -
【算法】插入排序、冒泡排序、选择排序、归并排序 C语言实现
简单算法就直接上代码了插入排序voidprintval(int *a, int n){ for (int i = 0; i < n; ++i) std::cout << a[i] << std::endl;}void insertsort(int *a, int n){ for (int i = 1; i <= n - 1; ...原创 2019-04-11 11:26:04 · 558 阅读 · 0 评论 -
【c++】左值、右值、左值引用、右值引用
左值、右值在C语言中,左值认为是赋值语句的左侧,右值认为是赋值语句的右侧。在C++中,意义稍有不同。C++中,每一个表达式会产生一个左值或者右值,相应的,该表达式也就被称作“左值表达式", "右值表达式"。一个左值表达式的求值结果是一个对象或者是一个函数。左值可以当右值使用,而右值不能当左值使用。《C++Prime》中这么简单归纳左值和右值:当一个对象被用作右值时候,用的是对象的值(...原创 2019-04-10 22:23:19 · 1048 阅读 · 0 评论 -
【c++】定义类的拷贝、赋值、移动操作以及注意事项
当定义一个类时,需要考虑5种特殊的成员函数。分别是:拷贝构造、拷贝赋值、移动构造、移动赋值和析构函数。这些函数操作称为拷贝控制操作。拷贝构造函数如果一个构造函数,第一个参数是自身类类型的引用,其他参数有默认值。那么这个构造函数称为拷贝构造函数。自身类类型必须是一个引用,通常使用const修饰。如果不是引用类型(传值参数),那么在实参给形参赋值时,会发生拷贝行为,又会调用拷贝构造,成为一个...原创 2019-04-10 20:30:40 · 508 阅读 · 0 评论 -
【c++】c++中顶层const与底层const
首先看下定义顶层const是指 const修饰的是指针,即此指针是常量指针,一旦指向某个对象,则不能指向其他对象底层const是指 const修饰的是指针所指向的对象为常量,不能通过指针去修改对象的值const int *pa;//底层constint a;int *const pb=&a; //顶层const,需要定义时初始化以下则是C++ Prime英...原创 2019-03-15 10:59:32 · 555 阅读 · 0 评论 -
【c++】mutable关键字讲解
有时候会有这样的一种需求,想要在const成员函数内,修改某个成员变量的值。那么我们需要将这个成员变量使用mutable关键字修饰,这样就可以在const成员函数内修改。class A{private : mutable int cnt_a = 0;public: int getval()const;}; int A::getval()const { ++cnt_a; /...原创 2019-08-06 22:00:33 · 167 阅读 · 0 评论