![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
MarkeyL
网络行业某产品部门开发,日常工作内容涉及嵌入式网络设备SSLVPN,国密,数字证书等模块.
同时也做一些SDWAN体系中集中管理平台的开发工作,也会经常和java打交道.
21年有跨平台图形客户端相关的工作内容,又开始接触C++和QT,以及qml.
展开
-
#program once 和 #ifndef
#program once 和 #ifndef在写小demo的时候,注意到vs中会自动生成#program once;看别人写的代码的时候见到比较多的反而是#ifndef—#define—#endif;从字面上看两种方式会产生相同的效果:避免同一个文件重复包含多次,但知道两种方式的本质还是有必要的。#program once:“同一个文件”指存储在相同位置的文件,即物理位置下相同;当编译器意识到文件存储位置向同事便会跳过“副本文件”,仅仅编译一次该物理位置的文件;但如果发生拷贝情况,便会出现重复包含的情转载 2022-01-29 14:00:36 · 4647 阅读 · 2 评论 -
Visual Studio快捷键
编译&运行&调试Ctrl + F7 编译F5 运行Shift + F5 停止调试Ctrl + F5 运行(不调试)F9 下断点F10 单步步过F11 单步步入监视窗口 err,hr 显示错误码和错误说明。(或 工具——错误查找,手动输入错误码查找)编码创建函数声明/定义。(函数名右键——快速操作和重构——创建声明/定义)F12 跳转到定义Ctrl + F12 跳转到声明Alt + 方向键上下 整行移动一行代码...原创 2022-01-29 12:38:07 · 1481 阅读 · 0 评论 -
C语言与汇编——宏定义,头文件重复包含,内存申请和释放
.c文件 -> 替换 -> 编译 -> 链接 -> exe文件typedef 只能给变量类型起别名。而#define可以给任何东西起别名。头文件重复包含问题#pragma once也能避免同一个头文件被包含(include)多次一般由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。你无法对一个头文件中的一段代码作pragma once声明,而只能针对文件。内存申请和释放..原创 2022-01-19 17:49:22 · 753 阅读 · 0 评论 -
c++实现树的dfs,bfs
void dfs(Node* head) { if (head == nullptr) { return; } std::cout << head->value << ","; dfs(head->left); dfs(head->right);}void bfs(Node* head) { if (head == nullptr) { // if head is nullptr, return原创 2021-08-19 00:35:31 · 221 阅读 · 0 评论 -
c/c++——判断一个字符串是否为合法IP地址(包括IPV4和IPV6)
#include <iostream>#include <algorithm>using namespace std;class Solution{public: string validIPAddress(string IP) { //以.和:来区分ipv4和ipv6 for (int i = 0; i < IP.length(); i++) { if (IP[i] == '.原创 2021-08-18 22:05:15 · 3295 阅读 · 1 评论 -
itoa的简单实现
itoa——数值转字符串char* itoa(int num, char* buf){ int i =0; int len = 0; char tmp; while (num) { buf[i++] = num %10 +'0'; num = num /10; } buf[i] = '\0'; return buf; len = i; for (i=0;i<len/2;i++).原创 2021-08-18 21:36:41 · 1187 阅读 · 0 评论 -
atoi的简易实现
atoi() ——字符串转数字//暂时仅考虑了十进制和十六进制int atoi(const char * buf){ int value =0; int base = 10; int i =0; if (buf[0] == '0' && buf[1] =='x') { base = 16; i = 2; } while (buf[i]) { int tmp; .原创 2021-08-18 21:20:46 · 107 阅读 · 0 评论 -
c++-任意进制数转十进制数
//n为待转换数串;radix为进制long long convert(string n, long long radix) { long long sum = 0; int index = 0, temp = 0; for (auto it = n.rbegin(); it != n.rend(); it++) { temp = isdigit(*it) ? *it - '0' : *it - 'a' + 10; sum += temp * po原创 2021-08-10 16:01:09 · 1079 阅读 · 0 评论 -
C++比较三项数据的最值
C++比较三项数据的最值int maxOfThreeNumbers(int num1, int num2, int num3) { if(num1>=num2) { if(num1>=num3) return num1; else return num3; } else{ if(num2>=num3) return num2; else原创 2021-07-06 08:56:43 · 142 阅读 · 0 评论 -
c++知识细节-基类指针指向子类对象/虚纯虚函数/多态性/虚析构
c++知识细节-基类指针指向子类对象/虚纯虚函数/多态性/虚析构基类指针,派生类指针新玩法: 父类指针可以new一个子类对象.Human *phuman = new Men;phuman->funchuman(); //父类类型指针可以调用父类的成员函数phuman->funcmen(); //不可以,因为你是一个父类指针Q: 既然父类指针没有办法调用子类的成员函数,那么为什么还让父类指针指向子类对象呢?虚函数Q: 有没有一个解决方法,使我们只定义一个对象指针,就能调用各种子类原创 2021-06-03 20:13:33 · 3158 阅读 · 0 评论 -
c++知识细节-派生类/构造函数调用顺序/访问等级/函数遮蔽
c++知识细节-派生类/调用顺序/访问等级/函数遮蔽派生类概念(1) 类之间的层次关系,有父亲类,有孩子类.例如车这个类,当做父类(也叫基类,超类),派生出卡车,轿车等孩子类(子类,派生类)继承: 父子之间的这种层次关系焦作继承.是我们面向对象程序设计的核心.(2) 格式:class 子类名:继承方式 父类名如: class Men : public Human派生类对象定义时调用构造函数的方式(1) 当定义子类对象时,会调用父类和子类的构造函数,且父类构造函数的函数体先执行,子类构造函数原创 2021-06-02 18:22:49 · 245 阅读 · 0 评论 -
c++知识细节-重载运算符/拷贝赋值运算符/析构函数
c++知识细节-重载运算符/拷贝赋值运算符/析构函数重载运算符如何比较两个对象是否相等?需要"重载 == 运算符".说白了,我们要写一个成员函数,这个成员函数名为operator==,这个成员函数里边,来写一些比较逻辑.例如:if(myTime1.Hour == myTime2.Hour) return true;正式说明:重载运算符,本质上是一个函数,整个函数的正式名字:operator关键字+运算符(1) 既然重载运算符,本质上是一个函数,那么就会有返回类型和参数列表.(2) 有一原创 2021-06-01 19:03:01 · 185 阅读 · 0 评论 -
c++知识细节-拷贝构造函数
c++知识细节-拷贝构造函数拷贝构造函数(复制构造函数)(1) 默认情况下,类对象的拷贝是每个成员变量逐个拷贝.(2) 如果一个类的构造函数的第一个参数是所属类类型的引用,如果还有其他参数,这些额外的参数还都有默认值,则这个构造函数就被称为拷贝构造函数.作用: 会在一定的时机被系统自动调用.(3) 函数默认参数必须放在函数生命中,除非该函数没有函数声明.(4) 拷贝构造函数只能有一个(5) 拷贝构造函数第一个参数建议带const.不要声明成explicit,因为会涉及到隐性类型转换.(6)原创 2021-05-31 18:33:39 · 126 阅读 · 0 评论 -
c++知识细节-类内初始化/默认构造函数/=default;
c++知识细节-类内初始化/默认构造函数/=default;##类相关非成员函数详见代码.##类内初始化在c++11里,我们可以为类内成员变量提供一个初始值,那么我们在创建对象的时候,这个初始值就用来初始化该成员变量.(1)没有初始值的成员变量,系统缺省策略为一个不确定的值;没有初始值的静态成员变量,系统缺省策略为0.//Time.h#ifndef __MYTIME__#define __MYTIME__class Time{public: int Hour; //小时 int M原创 2021-05-31 17:10:34 · 723 阅读 · 0 评论 -
c++知识细节-inline/成员函数末尾的const/mutable/this/static
c++知识细节-inline/成员函数末尾的const/mutable/this/statinline在类定义中定义并实现的成员函数,会被当做inline内联函数来处理。这种写法仅是开发者的建议,是否成功内联取决于编译器,所以函数体应尽量简单。被多次include也不会报函数重定义。成员函数末尾的const在成员函数屁股后边加一个const。不但要在成员函数声明中加const,也要在成员函数定义中增加const。类定义中定义并实现的成员函数后面加const也会有一样的效果。作用: 这个成员原创 2021-05-31 00:31:14 · 181 阅读 · 0 评论 -
c++知识细节-构造函数详解/explicit/初始化列表
c++知识细节-构造函数详解/explicit/初始化列表构造函数在类中,有一种特殊的成员函数,他的名字与类目相同,我们在创建累的对象的时候,这个特殊的成员函数就会被自动调用,这个成员函数,就叫做“构造函数”。理解: 构造函数的目的是为了初始化类对象的数据成员(1) 构造函数没有返回值,这也是其特殊之处。(2) 构造函数不可以手动调用,否则编译报错。(3) 正常情况下,构造函数应该被声明为public,因为我们在创建一个对象时,系统要帮我们自动调用构造函数,这说明构造函数是一个public函数,原创 2021-05-29 18:27:50 · 180 阅读 · 0 评论 -
c++知识细节-类和对象-成员函数/对象拷贝/私有成员
c++知识细节-类和对象-成员函数/对象拷贝/私有成员综述类是我们自己定义的数据类型(新类型)设计一个类要考虑的角度:(1) 站在设计和实现者的角度(2) 站在使用者的角度(3) 父子关系类基础(1) 一个类就是一个用户自己定义的数据类型,我们可以把类想象成一个命名空间,里包着一堆东西(成员函数,成员变量)(2) 如果是类的对象,使用对象名.成员名来访问成员;如果是指向这个对象的指针,使用指针名->成员名来访问成员.(4) public成员提供累的接口,暴露给外界,供外界使用;原创 2021-05-28 11:47:23 · 130 阅读 · 0 评论 -
c++知识细节-隐式类型转换/显示类型转换
c++知识细节-隐式类型转换/显示类型转换隐式类型转换系统自动转换,不需要开发人员介入int m = 3 + 45.6 //float->int;48.60000->48 小数部分被截掉double n = 3 + 45.6 //48.6显示类型转换(强制类型转换)int k = 5 % 3.2; //语法错误,%两边必须是整形//此时可以强转int k = 5 % (int)3.2; //ok,c语言风格的强转int k = 5 % int(3.2); //ok,函数风格的原创 2021-05-27 20:31:22 · 139 阅读 · 0 评论 -
c++知识细节-迭代器及失效分析/实战
c++知识细节-迭代器及失效分析/实战简介迭代器是一种遍历容器内元素的数据类型,有点像指向容器中各个元素的指针.在c++中,很少用[]下标的形式来访问容器,因为可能某种容器不能使用[]来访问,而迭代器的方式是所有容器都支持的,更通用.容器的迭代器类型vertor<int> iv{100,200,300};vector<int>::iterator iter; //定义迭代器时,也必须是vector<int>下定义的iterator成员.可以把vector::原创 2021-05-27 11:28:20 · 234 阅读 · 0 评论 -
c++知识细节-c++标准库-vertor类型
c++知识细节-c++标准库-vertor类型简介集合或动态数组,可以将若干对象装在里面.也被称为容器.#include <vector>using namespace std;vector<int> vjihe; //表示vjihe里面存放的是int型数据(int型对象)原创 2021-05-26 22:05:40 · 188 阅读 · 0 评论 -
c++知识细节-c++标准库-string类型
c++知识细节-c++标准库-string类型简介char str[100] = "I Love China" c语言中用法string s1 = "I Love China" c++用法,可与char数组互转Tips:需要#include <string>和using namespace std,仅管iostream中已间接引用到了string,但还是建议直接#include <string>全部内容.定义和初始化string对象string s1; //默认初始化,原创 2021-05-26 11:31:25 · 165 阅读 · 0 评论