![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++基础
文章平均质量分 73
sky天
这个作者很懒,什么都没留下…
展开
-
C++ 11新特性
1.Variadic TemplatesC++11的新特性–可变模板参数是c++新增的特性之一,它对参数实现了高度泛化,能表示0到任意个数、任意类型的参数。相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。变体现在两个方面:(1)参数个数:利用参数个数逐一递减的特性,实现递归调用;(2)参数类型:参数个数逐一递减导致参数类型也逐一递减;两个注意点(1)递归调用(2)递归终止:使用重载的办法终止递归调用;int maximun(int n){原创 2021-01-23 20:04:48 · 160 阅读 · 0 评论 -
文件操作
5 文件操作程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作5.1文本文件5.1.1写文件写文件步骤如下:原创 2021-01-20 15:59:24 · 84 阅读 · 0 评论 -
多态相关
4.7 多态4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址```C++class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不原创 2021-01-20 15:32:21 · 106 阅读 · 1 评论 -
继承
4.6 继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码总结:继承的好处:可以减少重复的代码class A : public B;A 类称为子类 或 派生类B 类称为父类 或 基类派生类中的成员,包含两大部分:一类是从基类继承过来的,一类是自己增加的成员。从基类继承过过来的表现其共性,而新增的成员体现了其个性。4.6.2 继承方式继原创 2021-01-20 13:46:15 · 168 阅读 · 0 评论 -
STL之自己实现简单地空间配置器allocater
阅读《STL源码分析》第二章 仿照书上2.1.1节编写了一个自己的简易空间配置器1 储备知识size_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_tptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.size_type是unsigned类型,表示容器中元素长度或者下标,vector::size_type i = 0;difference_type是signed类型,表示迭代器差距,vec原创 2020-11-02 11:15:05 · 284 阅读 · 0 评论 -
c++ new 的几个用法
1.在 c++ 里 new 有三个用法。1) new xxx, 2) operator new( int size ), 3) placement new.2.最常用的是 new xxx 例如 pstr = new string(“xxx”); 这种会调用 string 的构造函数,并需要通过 delete pstr 来析构。 void* w = operator new(100); operator delete(w);1.void* operator new( size_t siz转载 2020-11-02 08:47:24 · 4132 阅读 · 1 评论 -
C++中explicit的作用及用法
仅含一个参数的构造函数和除了第一个参数外其余参数都有默认值的多参构造函数承担了两个角色。是个构造函数;2 .是个默认且隐含的类型转换操作符。explicit是个C++关键字,其作用是指定仅有一个参数或除第一个参数外其它参数均有默认值的类构造函数不能作为类型转化操作符被隐含的使用,防止该类的对象直接被对应内置类型隐式转化后赋值,从而规定这个构造函数必须被明确调用。我们通过例子来直观的说明#include <iostream>using namespace std; class A转载 2020-10-27 16:53:58 · 1123 阅读 · 0 评论 -
基于多态的职工管理系统 c++期末大作业来咯
题目基于多态的职工管理系统首先进入欢迎界面,让用户输入不同选择,进入不同选项1.1. 0 – 退出1.2. 1 – 增加职工1.3. 2 – 删除职工1.4. 3 – 显示所有职工信息1.5. 4 – 修改职工信息1.6. 5 – 查找职工1.7. 6 – 按职工编号进行排序1.8. 7 – 清空文档退出- 退出管理系统增加职工,添加新职工,可以批量添加多...原创 2020-03-11 13:27:48 · 805 阅读 · 2 评论 -
c++之纯虚函数和抽象类
纯虚函数和抽象类在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容因此可以将虚函数改为纯虚函数纯虚函数语法:virtual 返回值类型 函数名 (参数列表)= 0 ;当类中有了纯虚函数,这个类也称为抽象类抽象类特点:无法实例化对象子类必须重写抽象类中的纯虚函数,否则也属于抽象类示例:class Base{public: //纯虚函数 //类中只要...原创 2020-03-09 13:48:12 · 192 阅读 · 0 评论 -
c++之多态基本概念
多态多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址下面通过案例进行讲解多态class Animal{public: //Speak函数就是...原创 2020-03-09 13:46:50 · 246 阅读 · 0 评论 -
c++之虚析构和纯虚析构
虚析构和纯虚析构多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码解决方式:将父类中的析构函数改为虚析构或者纯虚析构虚析构和纯虚析构共性:可以解决父类指针释放子类对象都需要有具体的函数实现虚析构和纯虚析构区别:如果是纯虚析构,该类属于抽象类,无法实例化对象虚析构语法:virtual ~类名(){}纯虚析构语法:virtual ~类名(...原创 2020-03-09 13:45:08 · 309 阅读 · 0 评论 -
c++之浅拷贝与深拷贝
深拷贝与浅拷贝深浅拷贝是面试经典问题,也是常见的一个坑。浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作实例class Person {public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" << endl; } //有参构造函数 Person(int age ,int height) ...原创 2020-03-06 18:29:40 · 202 阅读 · 0 评论 -
指针作为函数参数,C语言指针作为函数参数详解
我们在前面讲指针重要性的时候讲过:“指针能使被调函数返回一个以上的结果”。本小节给大家写一个经典的程序,就是通过一个函数修改主函数中好几个变量的值。这个程序很经典,把这个程序弄清楚了,指针就算是入门了。在写这个程序之前先来作一个铺垫:# include <stdio.h>void Swap(int a, int b); //函数声明int main(void){ in...转载 2020-02-20 11:31:09 · 1381 阅读 · 1 评论 -
c++小问题
在c++中实参和形参有3种结合方式,分别为:值传递、引用传递和地址传递。说法是否正确?解析:正如其他的普通的变量一样,形参的类型决定了形参与实参的结合方式。如果一个形参是引用类型,那么这个形参被绑定到实参上,成为实参的别名;如果形参不是一个引用类型,那么实参的值将被拷贝并赋予形参。当一个形参是一个引用类型,我们说它对应的实参被“引用传递”或者说当前函数被“引用调用”。正如普通的引用一样,一个...原创 2020-02-19 21:25:04 · 119 阅读 · 0 评论