自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(58)
  • 收藏
  • 关注

原创 C++ 56.提高篇--模板--概念和语法

针对c++泛型编程和STL技术做详细讲解模板的概念:模板就是建立通用的模具,大大提高复用性c++其中一种编程思想称为泛型编程,主要利用的技术就是模板c++提高两种模板机制:函数模板、类模板函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表函数模板语法:template<typename T>函数声明或定义解释:template--声明创建模板typename--表示其后面的符号是一种数据类型,可以用class代替T--通用的

2022-04-06 20:49:14 1008

原创 C++ 55.基于多态的职工管理系统(11)——清空文件

功能描述:将文件中记录数据清空1.清空函数声明在workerManager.h中添加成员函数//清空文件 void Clean_File();2.清空函数实现在workerManager.cpp中实现成员函数//清空文件void WorkerManager::Clean_File(){ cout << "确认清空?" << endl; cout << "1.确认" << endl; cout << "2.返回" &

2022-04-04 00:30:00 450

原创 C++ 54.基于多态的职工管理系统(10)——按照职工编号进行排序功能实现

功能描述:按照职工编号进行排序,排序的顺序由用户指定1.排序函数声明在workerManager.h中添加成员函数//按照职工编号进行排序 void Sort_Emp();2.排序函数实现在workerManager.cpp中实现成员函数//排序函数void WorkerManager::Show_Emp(){ if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空" << endl; system(

2022-04-03 15:10:32 1834

原创 C++ 53.基于多态的职工管理系统(9)——查找职工功能

功能描述:提供两种查找职工方式,一种按照职工编号,一种按照职工姓名1.查找职工函数声明在workerManager.h中添加成员函数//查找职工 void Find_Emp();2.查找职工函数实现在workerManager.cpp中实现成员函数//查找职工void WorkerManager::Find_Emp(){ if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空" << endl; } e

2022-04-02 00:15:00 1047

原创 C++ 52.基于多态的职工管理系统(8)——修改职工功能

修改职工功能描述:能够按照职工的编号对职工信息进行修改并保存1.修改职工函数声明在workerManager.h中添加成员函数//修改职工 void Mod_Emp();2.修改职工函数实现在workerManager.cpp中实现成员函数//修改职工void WorkerManager::Mod_Emp(){ if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空!" << endl; } els

2022-04-01 02:30:00 233

原创 C++ 51.基于多态的职工管理系统(7)——删除职工功能

功能描述:按照员工的编号进行删除职工操作1.删除职工函数声明在workerManager.h中添加成员函数//删除职工 void Del_Emp();2.职工是否存在函数声明按照职工编号判断职工是否存在,在workerManager.h中添加成员函数//按照职工编号判断职工是否存在,若存在返回职工在数组中的位置,不存在返回-1 int IsExist(int id);3.职工是否存在函数实现在workerManager.cpp中实现成员函数//判断职工是否存在int W

2022-03-31 20:30:01 1058 2

原创 C++ 50.基于多态的职工管理系统(6)——显示职工功能

功能描述:显示当前所有职工信息1.显示职工函数声明在workerManager.h中添加成员函数//显示职工void Show_Emp();2.显示职工函数实现在workerManager.cpp中实现成员函数//显示职工void WorkerManager::Show_Emp(){ if (this->m_FileIsEmpty) { cout << "文件不存在或记录为空" << endl; } else { for (int i

2022-03-29 00:15:00 171

原创 C++ 49.基于多态的职工管理系统(5)——文件交互(读文件)、初始化数组

文件交互-读文件功能描述:将文件中的内容读取到程序中虽然我们实现了添加职工后保存到文件的操作,但是每次开始执行程序,并没有将文件中数据读取到程序中而我们的程序功能中还有清空文件的需求因此构造函数初始化数据的情况分为三种:1. 第一次使用,文件未创建在workerManager.h中添加新的成员属性m_FilelsEmpty标志文件是否为空//判断文件是否为空 标志 bool m_FileIsEmpty;修改 workerManager.cpp中构造函数代码WorkerMana

2022-03-28 19:22:03 1629

原创 C++ 48.基于多态的职工管理系统(4)——文件交互(写文件)

功能描述:对文件进行读写在上一个添加功能中,我们只是将所有的数据添加到了内存中,一旦程序结束就无法保存因此文件管理类中需要一个与文件进行交互的功能,对于文件进行读写操作1. 设定文件路径,在workerManager.h中添加宏常量,并且包含头文件fstream#include<fstream>#define FILENAME"emFile.txt"2. 成员函数声明,在workerManager.h中类里添加成员函数//保存文件void save();3. 保存

2022-03-27 21:08:39 1326

原创 C++ 47.基于多态的职工管理系统(3)——添加职工(功能描述、功能分析、功能实现)

功能描述:批量添加职工,并且保存到文件中功能分析:1.用户在批量创建时,可能会创建不同种类的职工2.如果想将所有不同种类的员工都放入到一个数组中,可以将所有员工的指针维护到一个数组里3.如果想在程序中维护这个不定长度的数组,可以将数组创建到堆区,并利用Worker**的指针维护功能实现:1. 在WorkerManager.h头文件中添加成员属性//记录文件中的人数个数int m_EmpNum;//员工数组的指针Worker ** m_EmpArray;2. ...

2022-03-26 19:57:54 1750

原创 C++ 46.基于多态的职工管理系统(2)——创建职工类(创建职工抽象类、创建普通员工类、创建经理类、创建老板类)

职工

2022-03-25 18:15:36 1182

原创 C++ 45.基于多态的职工管理系统(1)(需求分析、创建管理类内容、菜单功能、退出功能)

管理系统需求职工管理系统可以用来管理公司内所有员工的信息(C++实现基于多态的职工管理系统)公司中职工分为三类:普通员工、经理、老板、显示信息是,需显示职工编号、职工姓名、职工岗位、职责普通员工职责:完成经理交给的任务经理职责:完成老板交给的任务,并下发任务给员工老板任务:管理公司所有事务管理系统中需要实现的功能如下:1.退出管理程序:退出当前管理系统2.增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号、姓名、部门编号3.显示职工信息:显示公司内部所有职工的信息.

2022-03-23 00:15:00 581

原创 C++ 44.文件操作—二进制文件(写文件、读文件)

以二进制的方式对文件进行读写操作打开方式指定为ios::binary写文件利用流对象调用成员函数write函数原型:ostream & write(const char * buffer,int len);参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数读文件利用流对象调用成员函数read函数原型:istream & read( char * buffer,int len);参数解释:字符指针buffer指向内存中一段存储空间,len是读写的字节数

2022-03-22 00:15:00 410

原创 C++ 43.文件操作—文本文件(文件分类、写文件、读文件)

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放。通过文件可以将数据持久化C++中对文件操作需要包含头文件<fstream>文件类型分为两类:1.文本文件:文件以文本的ASCII码形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:1.ofstream:写操作2.ifstream:读操作3.fstream:读写操作...

2022-03-21 00:30:00 543

原创 C++ 42.类与对象—多态的案例3(电脑组装需求分析、电脑组装具体实现)

案例描述:电脑主要组成部件CPU(用于计算),显卡(用于显卡),内存条(用于存储)将每个零件封装出抽象基类,并且提供不同的厂商生产不同的零件,例如Intel厂商和Lenovo厂商创建电脑类提供让电脑工作的函数,并且调用每个零件工作的接口测试时组装三台不同的电脑进行工作#include<iostream>using namespace std;#include<string>//抽象不同零件类//抽象计算函数class CPU {public:

2022-03-20 00:15:00 242 1

原创 C++ 41.类与对象—多态的虚析构和纯虚析构

多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码解决方式:将父类中的析构函数改为虚析构或者纯虚析构虚析构和纯虚析构共性:1.可以解决父类指针释放子类对象 2.都需要有具体的函数实现 虚析构和纯虚析构区别:如果是纯虚析构,该类属于抽象类,无法实例化对象虚析构语法:virtual ~类名(){}纯虚析构语法:virtual ~类名()=0;补充:实例化是指在面向对象的编程中,把用类创建对象的过程称为实例化。 是将一个抽象的概念类,具体到该类实物的过程。 实例化过程中一般由..

2022-03-19 00:15:00 205

原创 C++ 40.类与对象—纯虚函数与抽象类、多态案例2(制作饮品)

在多态中,通常父类中虚函数的实现是毫无意义,主要是调用子类重写的内容因此可以将虚函数改为纯虚函数纯虚函数语法:virtual 返回值类型 函数名 (参数列表)=0;当类中有了纯虚函数,这个类也称为抽象类抽象类特点:1.无法实例化对象 2.子类必须重写抽象类中的纯虚函数,否则也属于抽象类#include<iostream>using namespace std;#include<string>class Base {public: //纯虚函数 //只要有.

2022-03-18 00:15:00 409

原创 C++ 39.类与对象—多态案例(计算器类)

分别利用普通写法和多态技术实现计算器多态带来的好处:1.结构组织清晰 2.可读性强 3.对于前期和后期扩展以及维护性高在实际开发中:对扩展进行开放,对修改进行关闭#include<iostream>using namespace std;#include<string>//普通写法class Calculator //Animal称为虚基类{public: int getResult(string oper) { if (oper=="+") ..

2022-03-17 00:15:00 228

原创 C++ 38.类与对象—多态的基本语法

多态是c++面向对象三大特征之一(封装、多态、继承)多态分类:静态多态:函数重载和运算符重载属于静态多态,复用函数名动态多态:派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定——编译阶段确定函数地址动态多态的函数地址晚绑定——运行阶段确定函数地址...

2022-03-16 00:00:00 70

原创 C++ 37.类与对象—继承语法 与 菱形继承

c++允许一个类继承多个类语法:class子类:继承方式 父类1,继承方式 父类2...多继承可能会引发父类中有同名成员出现,需要加作用域区别实际开发中不建议使用多继承#include<iostream>using namespace std;class Base1{public: Base1() { m_A = 100; } int m_A; };class Base2{public: Base2() { m_B = 200; } int

2022-03-15 00:30:00 159

原创 C++ 36.类与对象—继承(同名静态成员处理)

问题:继承中同名的静态成员在子类对象上如何进行访问静态成员与非静态成员出现同名,处理方式一致访问子类同名成员 直接访问即可访问父类同名成员 需要加作用域#include<iostream>using namespace std;//继承中同名成员处理class Base{public: static int m_A; static void func() { cout << "Base- static void func()" << ..

2022-03-14 15:18:58 900

原创 C++ 35.类与对象—继承中(同名成员处理)

问题:当子类与父类出现同名的成员,如何通过子类对象,访问到子类或父类同名的数据?访问子类同名成员 直接访问即可访问父类同名成员 需要加作用域#include<iostream>using namespace std;//继承中同名成员处理class Base{public: Base() { m_A = 100; } void func() { cout << "Base 下 func()调用=" << endl; } i..

2022-03-14 11:07:48 372

原创 C++ 34.类与对象—继承中的构造与析构顺序

子类继承父类后,当创建子类对象,也会调用父类的构造函数。#include<iostream>using namespace std;class Base{public: Base() { cout << "Base构造函数!" << endl; } ~Base() { cout << "Base析构函数!" << endl; }};class Son :public Base{public: Son()

2022-03-12 01:00:00 67

原创 C++ 33.类与对象—继承中的对象模型

从父类继承过来的成员,哪些属于子类对象中?1.利用开发人员命令提示工具查看对象模型2.跳转盘符 F:3.跳转文件路径 cd 具体路径下4.查看命名5.cl /d1 reportSingleClassLayout类名 文件名 (c后是英文,d后是数字)#include<iostream>using namespace std;class Base{public: int m_A;protected: int m_B;private: int m_C;..

2022-03-11 00:30:00 86

原创 C++ 32.类与对象—继承基本语法与继承方式

继承是面向对象三大特性之一。定义这些类与类之间有特殊关系的,下级别的成员除了拥有上一级的共性,还有自己的特性。继承的基本语法:class 子类:继承方式 父类继承的好处:减少重复代码子类 也称为派生类;父类 也称为基类。#include<iostream>using namespace std;//普通实现页面//Java页面//class Java//{//public:// void header()// {// cout << "首页...

2022-03-10 00:45:00 161

原创 C++ 31.类与对象—运算符重载3(关系、函数调用)

关系运算符重载作用:重载关系运算符,可以让两个自定义类型对象进行对比操作#include<iostream>using namespace std;#include<string>//重载 关系运算符class Person{public: Person(string name, int age) { m_Name = name; m_Age = age; } //重载 == 号 bool operator==(Person &

2022-03-09 00:15:00 70

原创 C++ 30.类与对象—运算符重载2(递增、赋值)

递增运算符重载作用:实现两个自定义数据类型相加的运算/*-------------------------------------------------------------------------------作用:实现自己的整型数据-------------------------------------------------------------------------------*/#include<iostream>using namespace std;c

2022-03-08 00:15:00 105

原创 C++ 29.类与对象—运算符重载1(加号、左移)

运算符重载概念:对已有的运算符重新进行定义,赋予另一种功能,以适应不同的数据类型总结:1.对于内置的数据类型的表达式的运算符是不可能改变的2.不要滥用运算符重载加号运算符重载作用:实现两个自定义数据类型相加的运算#include<iostream>using namespace std;class Person{public: //1.成员函数重载+号。函数名是编译器起的 Person operator+ (Person &p) { Person

2022-03-07 01:15:00 86

原创 C++ 28.类与对象—友元(全局函数做友元、友元类、成员函数做友元)

友元

2022-03-06 00:15:00 164

原创 C++ 27.类与对象—对象特性—对象模型与this指针

成员变量与成员函数分开存储this指针的用途空指针访问成员函数const修饰成员函数成员变量与成员函数分开存储在c++中,类内的成员变量和成员函数分开存储。只有非静态成员变量才属于类的对象。#include<iostream>using namespace std;#include<string>//类对象作为类成员class Person{ int m_A; //非静态成员变量,属于类的对象上的数据 static int m_B; /

2022-03-05 00:15:00 152

原创 C++ 26.类与对象—对象特性—静态成员函数

静态成员概念:就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分类:1.静态成员变量:所有对象共享同一份数据;在编译阶段分配内存;类内声明,类外初始化2.静态成员函数:所有对象共享同一个函数;静态成员函数只能访问静态成员变量#include<iostream>using namespace std;#include<string>//类对象作为类成员class Person{public: //静态成员函数 static void

2022-03-04 00:30:00 235

转载 C++ 25.类与对象—对象特性—类对象作为类成员

/*-------------------------------------------------------------------------------C++类中的成员可以是另一个类的对象,我们称该成员为对象成员例如:class A{}class B{ A a}B类中有对象A作为成员,A为对象成员。当创建B对象时,A和B的构造和解析的顺序,构造先A后B,析构先B后A---------------------------------------------------------.

2022-03-03 00:30:00 385

原创 C++ 24.类与对象—对象特性—初始化列表

作用:c++提供初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2)...{ }#include<iostream>using namespace std;class Person{public: ////传统初始化操作 //Person(int a,int b,int c) //{ // m_A = a; // m_B = b; // m_C = c; //} //初始化列表初始化属性 //Person() :m_A(10), m

2022-03-02 09:39:56 124

原创 C++ 23.类与对象—对象特性—深、浅拷贝

浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作#include <iostream>using namespace std;class Person{public: Person()//无参构造 { cout << "Person 默认造函数的调用" << endl; } Person(int age,int height)//有参构造 { m_age = age;//浅拷贝操作 m_Height = new

2022-01-24 14:32:23 120

原创 C++ 22.类与对象—对象特性—构造函数的分类及调用(拷贝构造函数调用时机、构造函数调用规则)

构造函数分类方式按参数分为:有参构造和无参构造(默认构造)按类型分为:普通构造和无参构造构造函数三种调用方式1.括号法 2.显示法 3.隐式转换法#include <iostream>using namespace std;class Person{public: Person()//无参构造 { cout << "Person 无参构造函数的调用" << endl; } Person(int a)//有参构造 { ...

2022-01-23 20:55:24 465

原创 C++ 21.类与对象—对象特性—构造函数、析构函数

对象的初始化和清理也是两个非常重要的安全问题:一个对象或者变量没有初始状态,对其使用后果是未知。同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题。C++使用构造函数和析构函数,这两个函数会被编译器自动调用,完成对象初始化和清理工作(强制要做)。如果我们不提供构造和析构,编译器会提供编译器提供的构造函数和析构函数是空实现。构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。析构函数:主要作用在于对象销毁前系统自动调用,执行一些清理工

2022-01-13 21:41:03 315

原创 PointNet

点云数据集 CoCa、pass/sco如何获取3D点云数据:传感器扫描

2022-01-12 21:54:12 195

原创 C++ 20.类与对象—封装案例2:点与圆的关系 (将类作为.h文件)

设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系步骤:1.创建立方体类2.设计属性3.设计行为:获取立方体面积和体积4.判断两个立方体是否相等class Point//点类{public: void setX(int x)//设置X { m_X = x; } int getX()//获取X { return m_X; } void setY(int y)//设置Y { m_Y = y; } int getY()//获取Y {

2022-01-11 22:49:00 326

原创 C++ 19.类与对象—封装案例1.设计立方体类

案例:设计立方体类求出立方体的面积和体积,分别用全局函数和成员函数判断两个立方体是否相等步骤:1.创建立方体类2.设计属性3.设计行为:获取立方体面积和体积4.判断两个立方体是否相等#include<string>class Cube{public: //行为,获取立方体 //设置长 void setL(int l) { m_L = l; } //获取长 int getL() { return m_L; } //设置宽 void setW(

2022-01-11 20:09:21 202

原创 C++ 18.类与对象—封装(封装的意义、实例:学生类、访问权限、struct和class区别、成员属性设置为私有)

面向对象三大特性:封装、继承、多态对象上有其属性和行为。具体相同性质的对象,我们可以抽象称为类。人属于人类。类中的属性和行为,我们统一称为成员。1.属性也称为:成员属性、成员变量。2.行为也称为:成员函数、成员方法。封装的意义:1.将属性和行为作为一个整体,表现生活中的事物 2.将属性和行为加以权限控制语法:class 类名{ 访问权限:属性/行为 }#include<iostream>using namespace std;//设计一个圆类,求圆的周长//圆周.

2022-01-10 21:06:56 171

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除