![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
ywl470812087
个人简介:深耕物联网行业,ERP,CSDN博客专家。 任职华为网联网智慧照明、空调资深工程师,并且上线投产使用,研发企业亿量级吞吐中间件。 擅长 Java语言、C语言等。
展开
-
C++ 普通函数和模板函数调用规则
/**调用规则如下:1.如果函数模板和普通函数都可以实现,优先调用普通函数2.可以通过空模板参数列表来强制调用函数模板3.函数模板也可以发生重载4.如果函数模板可以产生更好的匹配, 优先调用函数模板*/#include<iostream>;using namespace std;/**调用规则如下:1.如果函数模板和普通函数都可以实现,优先调用普通函数2.可以通过空模板参数列表来强制调用函数模板3.函数模板也可以发生重载4.如果函数模板可以产生更好的匹配, .原创 2020-07-29 22:30:45 · 111414 阅读 · 1 评论 -
C++ 使用模板需要注意的事情
#include<iostream>using namespace std;#include<string>#include<fstream>//函数模板注意事项template<class T> //typename 可以替换成classvoid mySwap(T&a, T&b){ T temp = a; a = b; b = temp; }//1、自动类型推导,必须推导出- -致的数据类型T才可以使用vo.原创 2020-07-29 21:40:05 · 117947 阅读 · 0 评论 -
C++ 使用模板Template
使用模板之前:#include<iostream>using namespace std;#include<string>#include<fstream>//两个整型交换函数void swapInt(int &a, int &b) { int temp = a; a = b; b = temp;}//交换两个浮点型函数void swapDouble(double &a,double &b) { doub原创 2020-07-29 21:02:43 · 111627 阅读 · 0 评论 -
C++ 二进制文件读操作
读二进制文件二进制方式读文件主要利用流对象调用成员函数read函数原型:[ istream& read(char *buffer,int len);参数解释:字符指针buffer指向内存中一段存储空间。len是读写的字节数示例:#include <fstream>#include <string>#include<iostream>using namespace std;class Person{public: char m_Name[原创 2020-07-28 22:26:53 · 108263 阅读 · 4 评论 -
C++ 二进制文件写操作
#include<iostream>using namespace std;#include<fstream>class Person {public: char m_Name[64]; //姓名 int m_Age; //年龄};void test01(){ //1、包含头文件 //2.创建流对象 ofstream ofs("person.txt",ios::out | ios::binary); //3、打开文件 //ofs.open("pe.原创 2020-07-28 22:16:42 · 115034 阅读 · 0 评论 -
C++ 读取文件操作
C++ 读取文件操作原创 2020-07-28 21:46:53 · 122651 阅读 · 5 评论 -
C++ 文件写操作
#include <fstream>#include<iostream>using namespace std;void test01(){ ofstream ofs; ofs.open("test.txt",ios :: out); ofs << "姓名:张三"<< endl; ofs << "性别:男"<< endl; ofs << "年龄: 18" << endl; o.原创 2020-07-28 21:28:07 · 124958 阅读 · 0 评论 -
第四章类和对象 习题答案
一.选择题1.能提供封装的C++的下列关键字是(C)A.whileB. unionC. classD. for2.在下面所列项中,不是面向对象的特点的是(C)A. 多面性B. 抽象性和封装性C. 多线程和多任务D. 继承性3.下面选项中,对A类的构函数的正确定义是(A)A. A::~A( )B. void ~A::A(参数)C.~A::A(参数)D. void ~A::A( )4.下面有关构造函数的不正确说法是(B)A. 构造函数可以用来.原创 2020-07-25 13:56:56 · 122214 阅读 · 0 评论 -
C++ 运算符重载
4.5运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另- -种功能, 以适应不同的数据类型4.5.1加号运算符重载作用:实现两个自定义数据类型相加的运算#include<iostream>#include<string>using namespace std;//加号运算符重载class Person{ public: int m_A; int m_B;};void test01(){ Person p1; p1.m_A .原创 2020-07-25 12:56:21 · 119345 阅读 · 0 评论 -
C++ 友元函数
生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问, 就需要用到友元的技术友元的目的就是让一个函数或者类访问另-个类中私有成员友元的关键字为friend I友元的三种实现●全局函数做友元●类做友元●成员函数做友元...原创 2020-07-25 09:22:23 · 109993 阅读 · 0 评论 -
C++ this指针
成员函数没有使用const修饰,this的指向m_A是可以修改的,每个表达式都隐含了一个this指针。#include<iostream>#include<string>using namespace std;//常函数class Person{ public: // this指针的本质 是指针常量 指针的指向是不可以修改的 void showPerson() { this->m_A = 100; // this = NULL; //.原创 2020-07-25 08:54:38 · 120094 阅读 · 0 评论 -
C++ 静态成员函数
#include <iostream>using namespace std;#include <string>class Person{ public: //静态成员函数特点: //1程序共享一个函数 //2静态成员函数只能访问静态成员变量 static void func(){ cout << "func调用" << endl; m_A = 100; //m. _B = 100; //错误,不可以访问非静态.原创 2020-07-18 20:25:31 · 121195 阅读 · 0 评论 -
C++ 静态成员
静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为:●静态成员变量。所有对象共享同一份数据。在编译阶段分配内存。类内声明,类外初始化●静态成员函数I。所有对象共享同一个函数。静态成员函数只能访问静态成员变量#include <iostream>using namespace std;#include <string>class Phone{ public: Phone(string name) { ..原创 2020-07-18 20:21:53 · 120085 阅读 · 0 评论 -
C++ 类和对象成员特性
//当类中成员是其他类对象时,我们称该成员为对象成员//构造的顺序是:先调用对象成员的构造,再调用本类构造//析构顺序与构造相反#include <iostream>using namespace std;#include <string>class Phone{ public: Phone(string name) { m_PhoneName =name; cout << "Phone构造" << endl;原创 2020-07-18 19:56:37 · 117464 阅读 · 0 评论 -
C++ 初始化列表
#include <iostream>using namespace std;#include <string>//初始化列表class Person{public: //传统初始化操作 Person(int a, int b, int c) { m_A = a; m_B = b; m_C = c; } int m_A; int m_B; int m_C;};void test01() { Person p(10,20, 30).原创 2020-07-18 19:16:24 · 98817 阅读 · 0 评论 -
C++ 深拷贝与浅拷贝
#include<iostream>using namespace std;#include<string>class Person { public: Person() { cout << "Person的无参构造函数调用" << endl; }; Person(int age) { m_Age = age; cout << "Person的有参构造函数调用" << endl; }; .原创 2020-07-18 11:40:54 · 110785 阅读 · 0 评论 -
C++ 拷贝构造函数
#include<iostream>using namespace std;#include<string>class Person { int age;public: Person() { cout << "Person的无参构造函数调用" << endl; }; Person(int a) { age = a; cout << "Person的有参构造函数调用" << endl; }; .原创 2020-07-11 23:38:48 · 136943 阅读 · 0 评论 -
C++ 对象的初始化和清理
4.2对象的初始化和清理●生活中我们买的电子产品都基本会有出厂设置,在某-天我们不用时候也会删除一些自己信息数据保证安全●C++中的面向对象来源于生活,每个对象也都会有初始设置以及对象销毁前的清理数据的设置。4.2.1构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题一个对象或者变量没有初始状态,对其使用后果是未知同样的使用完一个对象或变量, 没有及时清理,也会造成一定的安全问题C+ +利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动追用,完成对象初始化和清理工作。原创 2020-07-05 16:49:53 · 115810 阅读 · 0 评论 -
C++ struct和class的区别
原创 2020-07-05 15:22:23 · 110483 阅读 · 0 评论 -
C++ 函数重载碰到默认的参数
#include<iostream>#include<string>using namespace std;//引用作为重载的条件void func(int &a) { //非常量引用 cout << " this is func" << endl;}void func(const int &a) { // 常量引用 const int &a = 10; 合法 cout << "c.原创 2020-07-05 14:05:19 · 116921 阅读 · 0 评论 -
C++ 函数参数的默认值和占位参数
3.2函数占位参数C++中函数的形参列表里可以有占位参数,用来做占位,调用函数时必须填补该位置语法:返回值类型 函数名(数据类型){}在现阶段函数的占位参数存在意义不大,但是后面的课程中会用到该技术#include< iostream>using namespace std;//占位参数void func(int a,int){ cout <<" this is func”<< end1 ;}#include<iostream>原创 2020-07-05 13:13:27 · 150982 阅读 · 0 评论 -
C++ 常量引用
#include<iostream>#include<string>using namespace std;int main() { //常量引用 //使用场景:用来修饰形参,防止误操作 //int a = 10; //加上const之后编译器将代码修改int temp = 10; const int & ref = temp; const int & ref = 10;//引用必须引一块合法的内存空间 ref = 20; //加入con.原创 2020-07-04 19:11:18 · 135899 阅读 · 0 评论 -
C++ 引用本质就是一个指针常量
#include<iostream>#include<string>using namespace std; //发现是引用,转换为int* const ref = &a; void func(int& ref) { ref = 100; // ref是引用,转换为*ref = 100 } int main() { int a = 10; //自动转换为int* const ref = &a; 指针常量是指针指向不可改,也说明.原创 2020-07-04 18:38:17 · 163567 阅读 · 7 评论 -
C++ 函数的引用传递
#include<iostream>#include<string>using namespace std;//1、值传递void mySwap01(int a, int b) { int temp = a; a = b; b = temp; cout << "mySwap01 a=" << a << endl; cout << "mySwap01 b=" << b << endl;}.原创 2020-07-04 11:44:00 · 134818 阅读 · 0 评论 -
C++ 堆区内存分配
#include<iostream>#include<string>using namespace std;int* func(int b) { //形参也放在栈区 int * p=new int(10); return p;}//2、在堆区利用new开辟数组void test02() {//创建10整型数据的数组,在堆区 int * arr = new int[10]; //10代表数组有10个元素 for (int i = 0; i <.原创 2020-07-04 10:27:34 · 163172 阅读 · 0 评论 -
C++ 程序运行后的内存模型
程序运行后栈区:由编译器自动分配释放,存放函数的参数值,局部变量等注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放#include<iostream>#include<string>using namespace std;int* func() { int a = 10; //局部变量放在栈区,方法执行完毕自动释放内存 return &a; //返回局部变量地址}int main() { int * p = f原创 2020-06-27 19:05:27 · 158142 阅读 · 0 评论 -
C++ 程序运行前内存分区模型
C++核心编程本阶段主要针对C++面向对象编程技术做详细讲解,探讨C++中的核心和精髓。1、内存分区模型C++程序在执行时,将内存大方向划分为4个区域●代码区:存放函数体的二进制代码,由操作系统进行管理的●全局区:存放全局变量和静态变量以及常量●栈区:|由编译器自动分配释放,存放函数的参数值,局部变量等●堆区:由程序员分配和释放若程序员不释放程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程1.1程序运行前在程序编译后,生成了exe可执原创 2020-06-27 18:52:19 · 121596 阅读 · 0 评论 -
C++ 通讯录设计(七)
1、清空联系人功能描述:清空通讯录中所有信息清空联系人实现步骤●封装清空联系人函数●测试清空联系人1.1封装清空联系人函数实现思路:将通讯录所有联系人信息清除掉,只要将通讯录记录的联系人数量置为0,做逻辑清空即可。清空联系人代码://6、清空所有联系人void cleanPerson(Addressbooks * abs){ abs->m_Size = 0; //将当期记录联系人数量置为0,做逻辑清空操作 cout << "通讯录已清空"<<.原创 2020-06-27 12:57:03 · 110390 阅读 · 0 评论 -
C++ 通讯录设计(六)
1、修改联系人功能描述:按照姓名重新修改指定联系人修改联系人实现步骤●封装修改联系人函数●测试修改联系人功能1.1封装修改联系人函数实现思路:查找用户输入的联系人,如果查找成功进行修改操作,查找失败提示查无此人修改联系人代码://5、修改指定联系人信息void modifyPerson(Addressbooks * abs){ cout << "请输入您要修改的联系人" << endl; string name; cin >> name;.原创 2020-06-27 12:37:32 · 143832 阅读 · 0 评论 -
C++ 通讯录设计(五)
1、查找联系人功能描述:按照姓名查看指定联系人信恿查找联系人实现步骤●封装查找联系人函数●测试查找指定联系人1.1封装查找联系人函数实现思路:判断用户指定的联系人是否存在,如果存在显示信息,不存在则提示查无此人。查找联系人代码://4、查找指定联系人信息void findPerson(Addressbooks * abs){ cout << " 请输入您要查找的联系人" << endl; string name; cin >> name;原创 2020-06-27 12:15:16 · 134218 阅读 · 0 评论 -
C++ 通讯录设计(四)
1、删除联系人功能描述:按照姓名进行删除指定联系人删除联系人实现步骤:●封装检测联系人是否存在●封装删除联系人函数●测试删除联系人功能1.1封装检测联系人是否存在设计思路:删除联系人前,我们需要先判断用户输入的联系人是否存在,如果存在删除,不存在提示用户没有要删除的联系人因此我们可以把检测联系人是否存在封装成一个函数中, 如果存在,返回联系人在通讯录中的位置,不存在返回-1...原创 2020-06-27 11:21:30 · 122428 阅读 · 1 评论 -
C++ 通讯录设计(三)
显示联系人功能描述:显示通讯录中已有的联系人信息显示联系人实现步骤: .●封装显示联系人函数●测试显示联系人功能1.1封装显示联系人函数思路:判断如果当前通讯录中没有人员,就提示记录为空,人数大于0,显示通讯录中信息...原创 2020-06-27 10:51:46 · 152020 阅读 · 0 评论 -
C++ 通讯录设计(二)
功能描述:实现添加联系人功能,联系人上限为1000人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)添加联系人实现步骤:●设计联系人结构体●设计通讯录结构体●main函数中创建通讯录●封装添加联系人函数●测试添加联系人功能...原创 2020-06-27 10:00:12 · 124965 阅读 · 0 评论 -
C++ 通讯录设计(一)
#include<iostream>#include<string>using namespace std;//- 封装函数显示该界面如void showMenu()// - 在main函数中调用封装好的函数//菜单界面函数功能void showMenu() { cout << "***********************" << endl; cout << "*****1、添加联系人*****" <<.原创 2020-06-27 09:57:24 · 109208 阅读 · 2 评论 -
C++ rand()函数和srand()函数
随机数和伪随机的区别:#include<iostream>using namespace std;#include<string>#include<string>#include <stdlib.h> #include <time.h> #define MIN 0 //随机数产生的范围 #define MAX 99 //函数声明void suiji();void weisuij.原创 2020-06-25 13:02:05 · 133001 阅读 · 0 评论 -
C++结构体案例
#include<iostream>using namespace std;#include<string>//学生结构体struct Student { string name; int age; int score;};struct Teacher { string tName; struct Student sArray[5];};//定义一个给老师学生赋值的函数void allocateSpace(struct Teacher tA.原创 2020-06-25 12:30:19 · 116109 阅读 · 0 评论 -
C++结构体中const使用场景
看如下代码:#include<iostream>using namespace std;#include<string>//结构体struct Student { string name; int age; int score;}st3;//值传递void printStufdents(struct Student st2) { cout << "子函数" << endl; st2.age = 150; cout .原创 2020-06-25 11:11:07 · 134309 阅读 · 1 评论 -
C++结构体作为函数参数传参
#include<iostream>using namespace std;#include<string>//结构体struct Student { string name; int age; int score;}st3;/* *结构体作为函数参数传参 *///值传递void printStufdent1(struct Student st3) { cout << "子函数" << endl; st3.age .原创 2020-06-25 10:45:56 · 101742 阅读 · 3 评论 -
const修饰是指针和常量
1. const修饰指针——常量指针int a=10:int b=10:int *p=&a;const int* p=&a;常量指针特点:指针的指向可以修改,但是指针指向的值不可以改(p可以改,*p不可以改)*p = 20;错误,指针指向的值不可以改p =&b; 正确,指针指向可以改2. const修饰常量——指针常量int a=10:int b=10:int *p=&a;int* const P=&a;指针常量特点:指..原创 2020-06-21 21:28:52 · 124460 阅读 · 0 评论 -
C++ 空指针和野指针
//1,指针变量指向内存中编号为0的空间为空指针 //2,空指针指向的内存空间是不可以访问的#include<iostream>using namespace std;int main() { int a = 10; int * p = &a; cout << p << endl; cout << &a << endl; cout << "指针占" << size...原创 2020-06-21 20:50:05 · 124922 阅读 · 0 评论