![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++核心编程
文章平均质量分 66
tao1151208
这个作者很懒,什么都没留下…
展开
-
C++习题二:职工管理系统:
职工管理系统1、管理系统需求职工管理系统可以用来管理公司内所有员工的信息本教程主要利用cpp来实现一个基于多态的职工管理系统公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责普通员工职责:完成经理交给的任务经理职责:完成老板交给的任务,并下发任务给员工老板职责:管理公司所有事务管理系统中需要实现的功能如下:退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号显示职工原创 2021-12-15 10:30:41 · 1000 阅读 · 0 评论 -
Array.h数组模板
模板快速了解原创 2021-12-02 11:03:09 · 1451 阅读 · 0 评论 -
STL(2):STL常用容器:string、vector
STL常用容器原创 2021-12-01 11:23:15 · 213 阅读 · 0 评论 -
STL(1):STL初识
STL的初识:STL的诞生:提高代码复用性:面向对象思想:面向对象三大特性——封装、继承、多态;泛型编程思想:模板–将类型参数化;STL基本概念:STL(Standard Template Library:标准模板库)STL六大组件:STL大体分为六大组件,分别是:容器、算法、迭代器、适配器(配接器)、空间配置器1.容器:各种数据结构,如:vector、list、deque、set、map等,用来存放数据;2.算法:各种常用的算法,如:sort、find、copy、for_e原创 2021-11-28 15:41:01 · 1050 阅读 · 0 评论 -
C++模板(3):类模板案例
类模板案例原创 2021-11-28 22:20:14 · 769 阅读 · 0 评论 -
C++泛型编程:模板(2)---具体化模板、类模板
模板的局限性:模板的通用性不是万能的;(数组无法直接进行赋值操作;)C++为了解决这种问题,提供模板的重载,可以为这些特定的类型提供具体化的模板;class Person {public: Person(string name,int age) { this->m_name = name; this->m_age = age; } string m_name; int m_age;};//普通函数模板template<typename T>b原创 2021-11-24 23:24:45 · 715 阅读 · 1 评论 -
C++泛型编程:模板(1)-函数模板
模板模板的概念:模板就是建立通用的模具,大大提高复用性;模板的特点:1.不可以直接使用,它只是一个框架2.模板的通用并不是万能的;函数模板C++ 另一种编程思想称为 泛型编程,主要利用的技术就是模板;C++提供两种模板机制: 函数模板 和 类模板;函数模板语法:函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表;语法:template < typename T>函数声明或定义解释:template原创 2021-11-23 17:38:26 · 858 阅读 · 1 评论 -
C++文件操作:
文件操作:程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放;通过文件可以将数据持久化;C++中对文件操作需要包含头文件< fstream >文件类型分为两种:1.文本文件:文件以文本的**ASCLL码形式存储在计算机中;2.二进制文件:文件以文本的二进制形式**存储在计算机中,用户一般不能直接读懂他们;操作文件的三大类:1.ofstream:写文件2.ifstream:读文件;3.fstream读写操作;文本文件:写文件:写文件步骤如下原创 2021-11-22 14:40:19 · 119 阅读 · 0 评论 -
C++多态(2):电脑案例
电脑组装案例#include<iostream>using namespace std;#include<string>//抽象不同零件类//抽象CPU类class CPU {public: //抽象的计算机函数; virtual void calculate() = 0;};//抽象显卡类class VideoCard {public: //抽象的计算机函数; virtual void display() = 0;};//抽象内存条类clas原创 2021-11-21 21:27:04 · 493 阅读 · 0 评论 -
C++多态:(1)纯虚函数和抽象类、虚析构
纯虚函数:使用抽象类的原因:在多态中,通常父类中虚函数的实现是毫无意义的,主要都是调用子类重写的内容;纯虚函数语法: virtual 返回值类型 函数名 ( 参数列表 ) = 0;当类中有了纯虚函数,这个类也称为抽象类;抽象类的特点:无法实例化对象;子类必须重写抽象类中的纯虚函数,否则也属于抽象类,则无法实例化对象;class Base {public: virtual void funcPrint() = 0;};class Son :public Bas原创 2021-11-21 20:54:26 · 703 阅读 · 0 评论 -
C++多态:(1)虚函数,案例1
多态的基本概念多态是C++面向对象三大特性之一;多态分为两大类:1.静态多态:函数重载 和 运算符重载属于静态多态,复用函数名;2.动态多态:派生类和弧函数实现运行时多态;(我们讲的多态多为动态多态)静态多态和动态多态区别:静态多态的函数地址早绑定 ——编译阶段确定函数地址;动态多态的函数地址晚绑定 ——运行阶段确定函数地址;class Animal {public: speak()就是虚函数 函数前面加上关键字virtual,变成虚函数,那么编译器在编译的时候就不能确定函数原创 2021-11-17 11:44:02 · 1066 阅读 · 0 评论 -
C++继承:
继承是面向对象三大特性之一有些类与类之间存在特殊关系:例如:动物——(猫、狗…)———(加菲猫、波斯猫…哈士奇、京巴…)下级别的成员除了拥有上一级的共性,还有自己的特性;这时,我们就可以考虑利用继承的技术,减少重复代码;继承的基本语法:例如:好比我们平时看到的很多网站中,有公共的头部、公共的地步;而其他子页面只有重心内容不同;这时就可以利用普通写法和继承的写法来实现网页中的内容;继承的好处:减少重复代码;语法:class 子类 :继承方式 父类{ }子类 也称为 派生类;父原创 2021-11-10 12:04:12 · 152 阅读 · 0 评论 -
C++类和对象(4):运算符重载——=、==、()函数调用运算符
赋值运算符重载:注意第四点:C++编译器自动生成复制运算符operator=,对属性进行值拷贝;如果类中有属性指向堆区,做赋值操作时也会出现深浅拷贝问题;P1 = p2;重载赋值运算符的一个重要原因是在堆区开辟了存储空间;但是赋值的过程中只是进行了浅拷贝(并未再在堆区开辟空间),所以导致堆区的数据重复释放报错;int a=10,b = 20, c = 30;a = b = c;p1 = p2 = p3;为了解决上述问题,所以重载赋值运算函数要放回引用类型;...原创 2021-11-03 10:40:55 · 1008 阅读 · 0 评论 -
C++类和对象(4):运算符重载——+、<<、++
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型;加号运算符重载作用:实现两个自定义数据类型相加的运算;这时需要定义成员函数重载+号或全局函数重载+号:定义成员函数重载+号class Person{public: 1.成员函数重载+号 Person operator+(Person &p) { Person temp; temp.m_A = this->m_A + p.m_A; temp.m_B = this->m_B原创 2021-10-23 16:46:11 · 262 阅读 · 0 评论 -
C++类和对象(4):友元
在程序里,有些私有属性,也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术;友元的目的就是让一个函数或者类访问另一个类中私有成员;友元的关键字为 friend友元的三种实现:全局函数做友元类做友元成员函数做友元全局函数做友元:——即全局函数中可以访问类中的私有成员class Building{//goodGay全局函数是 Building 的好朋友,可以访问Building中的私有成员;friend void goodGay(Building &building)原创 2021-10-23 14:41:46 · 100 阅读 · 0 评论 -
C++类和对象(3):C++对象模型和this指针、链式编程、const常对象/常函数
成员变量和成员函数分开存储:在C++中,类内的成员变量和成员函数分开存储;只有非静态成员变量才属于类的对象上;注:空对象占用内存空间为:1;class Person{public: Person() { m_B = 0; } //静态成员变量不占对象空间 static int m_A; //非非静态成员变量占对象空间 int m_B; //函数也不占对象空间,所有函数共享一个函数实例; void func() { } //静态成员函数也不占对象空间 static v原创 2021-10-23 11:07:57 · 133 阅读 · 0 评论 -
C++类和对象(3):类对象作为类成员/静态成员
类对象作为类成员:C++类中的成员可以是另一个类的对象,我们成改成员为 对象成员;例如:class A { }class B { A a;}B类中有对象A作为成员,A为成员对象;那么当创建B对象时,A与B 的构造和析构的顺序是谁先谁后?//手机类class Phone{public: Phone(string x_p_name) { p_name = x_p_name; } string p_name;};//人class Person{pub原创 2021-10-22 14:20:49 · 311 阅读 · 0 评论 -
C++中this指针解读:
this指针:在每个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this;它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址;例如:当调用成员函数a.volume时,编译系统就把对象a的起始地址赋给this指针,于是成员函数引用成员数据时,就要按照this的指向找到对象a的数据成员;例如:volume函数要计算heightwidthlength的值;实际上是执行(this->height)(this->width)(this->leng原创 2021-10-22 11:46:52 · 598 阅读 · 0 评论 -
C++类和对象(2):构造函数和析构函数、构造函数初始化列表
注意:1.类的属性可以是另一个类;(定义类时注意)2.实现成员函数中:要使用“::”作用域符号,这样才能定义/实现成员函数,否则会报错;3.在实现函数.cpp和main.cpp中都要包含.h头文件,如果一个头文件中使用另一个类,也需要引用对应的头文件对象的初始化和清理构造函数和析构函数C++提供了构造函数和析构函数完成对象初始化和清理工作;对象的初始化和清理工作是编译器强制要我们做的事情,因此如果我们不提供构造和析构函数,编译器会提供;但是**编译器提供的构造函数和析构函数时空实现的原创 2021-10-16 17:49:55 · 283 阅读 · 0 评论 -
C++类和对象(1):封装--权限用法(private/public/protected)、class与struct的区别
C++面向对象的三大特性为:封装、继承、多态;C++认为万事万物皆为对象,对象上有其属性和行为;封装——C++面向对象三大特性之一;封装意义:将属性和行为作为一个整体,表现生活中的事物;将属性和行为加以权限控制;...原创 2021-10-16 16:10:18 · 349 阅读 · 0 评论 -
C++函数提高
函数默认参数:在C++中,函数的形参列表中的形参是可以有默认值的语法:返回值类型 函数名 ( 参数 = 默认值 ) { }注意事项:(1).如果某个位置参数有默认值,那么从这个位置往后,从左向右,参数必须都要有默认值;int func(int a , int b , int c = 1 , int d = 2);————即不可有空缺(2)如果函数声明有默认参数,函数实现就不饿能有默认参数;(平时分为1.函数声明; 2.函数定义——即函数实现)原因:如果函数声明和函数实原创 2021-10-07 18:46:44 · 67 阅读 · 0 评论 -
C++引用:
引用的基本使用:作用:给变量起别名语法:数据类型 &别名 = 原名;int a = 10; int & b = a; cout << a << endl; cout << b << endl;引用注意事项:引用必须初始化;引用在初始化后,不可以改变;int &c;————错误,引用必须初始化;int &c = a; ————一旦初始化,就不可以更改;c = b;——这是赋值操作,不是更改引用原创 2021-10-07 16:34:34 · 95 阅读 · 0 评论 -
new操作符
new操作符的使用:C++中利用new操作符在堆区开辟数据:堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符delete语法:new 数据类型利用new创建的数据,会返回该数据对应的类型的指针;注意:返回的是指针int * func() { //在堆区创建整型数据 //new返回的是该数据类型的指针 int * p = new int(10); return p;}int main(){ int * a; //在堆区开辟的数据由程序员管理开辟,程序员释放原创 2021-10-07 15:31:33 · 118 阅读 · 0 评论 -
内存分区模型:
内存分区模型:C++程序在执行时,将内存大方向划分为4个区域:代码区:存放函数体的二进制代码,由操作系统进行管理的;全局区:存放全局变量和静态变量以及常量;栈区:由编译器自动分配释放,存放函数的参数值、局部变量等;——如形参等;堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收;内存四区意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程;程序运行前:只有代码区和全局区:理解全局变量和局部变量全局变量:定义在main( )函数体外的变量称为全局变量;原创 2021-10-07 15:03:25 · 133 阅读 · 0 评论