![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
alpha_2017
这个作者很懒,什么都没留下…
展开
-
获取时间并打印
1.打印并带有时间#include <iostream>#include <unistd.h>#include <sys/time.h>#include <fstream>#include <stdarg.h>using namespace std;#define printf logvoid log(const char *format, ...){ ofstream outfile("./log.txt", io原创 2021-01-15 00:08:09 · 225 阅读 · 1 评论 -
json解析数据
1.json解析数据/*{ "name": "milo", "age": 80, "languages": ["C++", "C"], "phone": { "number": "186****3143", "type": "home" }, "books":[ { "name": "Linux kernel development", "price":7.7 }, {原创 2021-01-11 22:41:30 · 363 阅读 · 0 评论 -
pb 数据解析
1. pb文件syntax = "proto3"; // syntax 版本2/3是不一样,默认是proto2package IM.Login; // package 生成对应的C++命名空间 IM::Login::import "IM.BaseDefine.proto"; // import 引用其他proto文件option optimize_for = LITE_RUNTIME;// message关键字 代表一个对象message Phone{ string numb.原创 2021-01-11 22:33:55 · 3525 阅读 · 0 评论 -
git 常见操作合集
1.新建分支并推送到远程gitcheckout-bslave在本地新建分支并不会推送到远程gitpushorginslave会将本地分支推送到远程主分支领先1.新建分支并推送到远程新建分支只是在本地存在,需要推送到远程,才会被所有人看到gitcheckout-bslavegitpushoriginslavegitpush--set-upstreamoriginslave设置远程关联的分支2.删除分支并推送到远...原创 2021-01-10 14:34:05 · 240 阅读 · 0 评论 -
枚举
1.先定义类型后定义变量格式: 〔,,…,〕;例如:enum colors{ red = 5, blue = 1, green, black, white, yellow };colors c1, c2;c1、c2 为colors类型的枚举变量。2.定义类型的同时定义变量格式:enum 〔 ,,…,〕实例;例如:enum colors{转载 2017-04-29 16:24:28 · 301 阅读 · 0 评论 -
c++多态
1. 什么是多态多态是C++中的一个重要的基础,可以这样说,不掌握多态就是C++的门外汉。然而长期以来,C++社群对于多态的内涵和外延一直争论不休。大有只见树木不见森林之势。多态到底是怎么回事呢?说实在的,我觉的多态这个名字起的不怎么好(或是译的不怎么好)。要是我给起名的话,我就给它定一个这样的名字--“调用’同名函数’却会因上下文不同会有不同的实现的一种机制”。这个名字长是长了点儿,可是转载 2017-07-17 10:08:24 · 290 阅读 · 0 评论 -
Git for windows 配置
从 http://git-scm.com/download 下载window版的客户端。下载好,一步一步安装即可。使用前的基本设置 git config --global user.name "用户名" (这里的用户名是你要设置的git的全局姓名或昵称) git config --global user.email "邮箱地址" (设置的全局邮箱地址) 3. 创建本地仓转载 2017-07-19 09:05:07 · 850 阅读 · 0 评论 -
malloc/free与new/delete的区别
相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构转载 2017-08-11 17:32:31 · 252 阅读 · 0 评论 -
VS2013中安装配置和使用Boost库
一、前言 今天准备去看场电影《后会无期》,但在这之前,我想好好研究下大名鼎鼎的Boost库。--------------------------------------------------------------------------------------二、Boost安装2.1 Boost官网下载Boost最新版Version 1.55.02.2将下转载 2017-09-12 22:29:16 · 2992 阅读 · 0 评论 -
深入理解程序从编译到运行
From:http://blog.chinaunix.net/uid-22327815-id-3540305.html从Hello World说程序运行机制:http://www.sohu.com/a/132798003_505868C/C++中如何在main()函数之前执行一条语句?:https://www.zhihu.com/question/26031933 前言 ...转载 2018-10-12 23:01:52 · 589 阅读 · 0 评论 -
c++ static 关键字总结
#ifndef FBC_CPP_BASE_TEST_STATIC_HPP_#define FBC_CPP_BASE_TEST_STATIC_HPP_#include <iostream>/************************************************************************************************...转载 2019-06-14 23:30:57 · 504 阅读 · 0 评论 -
C++学习之继承篇(is a:用子类对象给基类对象赋值或初始化)
1.下面的例子代码,就说明了标题:2.从内存的角度介绍is a:如下图所示:当基类含有两个数据成员m_strName和m_iAge时,不管是公有私有还是保护类型的,都会被子类继承过来,同时子类应该还有他自身的数据成员,m_strCode和m_ISalary,当我们用子类的对象给基类的对象赋值或者初始化基类的对象时,它的本质就是将从父类继承来的数据成员的值赋给转载 2017-07-18 09:39:40 · 1127 阅读 · 0 评论 -
C++子类对象隐藏了父类的同名成员函数(隐藏篇)
#include #include #include using namespace std;/** * 定义人类: Person * 数据成员: m_strName * 成员函数: attack() */class Person{public: Person() { cout } Per转载 2017-07-18 09:39:20 · 3885 阅读 · 0 评论 -
虚函数和虚析构函数的实现原理--虚函数表
通过下面的代码来说明:#include #include #include using namespace std;/** * 定义动物类:Animal * 成员函数:eat()、move() */class Animal{public: // 构造函数 Animal(){cout // 析构函数转载 2017-07-18 09:39:06 · 520 阅读 · 0 评论 -
C++静态库与动态库
这次分享的宗旨是——让大家学会创建与使用静态库、动态库,知道静态库与动态库的区别,知道使用的时候如何选择。这里不深入介绍静态库、动态库的底层格式,内存布局等,有兴趣的同学,推荐一本书《程序员的自我修养——链接、装载与库》。什么是库库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。本质上来说库转载 2017-03-14 21:20:09 · 229 阅读 · 0 评论 -
C++项目中的extern "C" {}
引言在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}转载 2017-03-14 21:23:55 · 192 阅读 · 0 评论 -
C++(多态实现原理)函数重写,重载,重定义
多态的实现原理: 首先介绍下函数重写 重定义 重载的区别;函数重写: 发生在父类和子类之间,子类将父类中的同名函数进行了覆盖,如果在函数前面含有virtual那么就是重写,如果没有就成了覆盖,子类的同名函数将会覆盖(隐藏)父类的同名函数,如果想调用的话,那么就要使用::作用域运算符函数重载: 函数重载发生在同类之间,平等关系。在不...原创 2017-03-13 17:14:55 · 4442 阅读 · 1 评论 -
深拷贝 浅拷贝
我认为浅拷贝是一个不喜欢思考的懒汉,而深拷贝则是一个思维严谨,喜欢思考的人。对于懒汉来说,虽然给了他任务,但是他总是想尽量的少做一些事情,所以很多时候做出来的东西就是只看到了表面,不会去思考对不对。structX{intx;inty;};对于懒汉来说,他很直白的看到了x,看到了y,然后就拷贝x和y,然后就不管了,反正我完成我的拷贝了,至于对不对,我不管。而一旦有了原创 2017-05-01 11:25:20 · 342 阅读 · 0 评论 -
C++11中的std::function
C++11中的std::function看看这段代码先来看看下面这两行代码:std::functionvoid(EventKeyboard::KeyCode, Event*)> onKeyPressed;std::functionvoid(EventKeyboard::KeyCode, Event*)> onKeyReleased;这两行代码是从Cocos2d-x中摘出来转载 2017-06-17 13:09:21 · 214 阅读 · 0 评论 -
C++字符串转化为数字的库函数
1、atoi功 能:把一字符串转换为整数用 法:int atoi(const char *nptr);详细解释:atoi是英文array to integer 的缩写。atoi()会扫描参数nptr字符串,如果第一个字符不是数字也不是正负号返回零,否则开始做类型转换,之后检测到非数字或结束符 /0 时停止转换,返回整型数。 参 数: *nptr: 待转化的字符串。返回转载 2017-06-18 22:01:45 · 452 阅读 · 0 评论 -
C++运算符重载讲解与经典实例
C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。例如: class complex { public: complex(double r=0.0,double I=0.0){real=r;imag=I;} void display(); private: double real; dou转载 2017-07-16 22:08:56 · 209 阅读 · 0 评论 -
C++_运算符重载 再思考
什么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义)怎么实现运算符的重载?方式:类的成员函数 或 友元函数(类外的普通函数)规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof友元函数和成员函数的使用场合:一般情况下,建议一元运转载 2017-07-16 22:10:32 · 301 阅读 · 0 评论 -
c++类型转换
C++有四种强制类型转换符,分别是dynamic_cast,const_cast,static_cast,reinterpret_cast。其中dynamic_cast与运行时类型转换密切相关,在这里我们先介绍dynamic_cast,其他三种在后面介绍。1、dynamic_cast运算符该转换符用于将一个指向派生类的基类指针或引用转换为派生类的指针或引用。转载 2017-07-17 08:59:09 · 224 阅读 · 0 评论 -
c++中的explicit关键字及隐式类型转换
c++中的explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢?如果c++类的构造函数有一个参数,那么在编译的时候就会有一个缺省的转换操作:将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class MyClass{public:MyClass( int num );}转载 2017-07-17 09:26:43 · 256 阅读 · 0 评论 -
拷贝构造函数和赋值构造函数的区别
1. 何时调用复制构造函数 复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下: class_name(const class_name&); 它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如下: String(const String&); 新建一个对象转载 2017-07-17 09:23:06 · 2210 阅读 · 0 评论 -
c++兰不达表达式
//C++ 11中的Lambda表达式用于定义并创建匿名的函数对象,以简化编程工作。Lambda的语法形式如下: //函数对象参数 mutable或exception声明->返回值类型{ 函数体 }//可以看到,Lambda主要分为五个部分: //[函数对象参数]、(操作符重载函数参数)、mutable或exception声明、->返回值类型、{ 函数体 }。下面分别进行介绍。转载 2017-07-18 09:38:47 · 1202 阅读 · 0 评论 -
C++ 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。 关于虚函数的使转载 2017-07-18 09:38:57 · 193 阅读 · 0 评论 -
C++对象模型
何为C++对象模型?C++对象模型可以概括为以下2部分:1. 语言中直接支持面向对象程序设计的部分2. 对于各种支持的底层实现机制语言中直接支持面向对象程序设计的部分,如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等,这也是组里其他同学之前分享过的内容。第一部分这里我简单过一下,重点在底层实现机制。在c语言中,“数据”和“处转载 2017-03-14 21:19:01 · 285 阅读 · 0 评论