
C/C++
文章平均质量分 88
jadeshu
这个作者很懒,什么都没留下…
展开
-
C++中new、delete构件三种方式
1. new delete1.1 new分为两步: a、内存分配 Ⅰ、内部调用全局的operator new(......)函数分配内存 Ⅱ、如果类中重载了operator new(......)函数,则调用这个重载的函数 b、构造函数 再调用相应的构造函数 1.2 delete 对应new方式的释放内存,分为两步 a、析构函数 调用一次析构函数 b、释放内存 Ⅰ...原创 2020-11-01 01:33:46 · 653 阅读 · 0 评论 -
C++模板、泛化、特化
一、模板1.1类模板(class template)template<typename T>class xxx{};1.2函数模板(function template)template <typename T>void xxxx(T & x, T & y){......}1.3成员模板(member template)template <typename T>class xxx{publ...原创 2020-10-29 22:25:39 · 2227 阅读 · 0 评论 -
函数模板参数左值,右值,引用
#include <iostream>#include <functional>using namespace std;template<class T>void valTest(T t) { cout << "void valTest(T t)" << endl; t++; cout << "t = " << t << endl;}template<class T.原创 2020-07-09 14:45:00 · 807 阅读 · 0 评论 -
C++对象数组调用带参数的构造函数
C++分配数组调用带参数的构造函数#include <iostream>using namespace std;class CStudent{public: CStudent(int num):age(num){} int age;};int main(int argc, char const *argv[]){ cout << "====...原创 2020-04-13 22:38:42 · 5190 阅读 · 0 评论 -
main函数
_io_init io初始化原创 2020-04-03 22:03:54 · 256 阅读 · 0 评论 -
C++重载->
class A {public: void display() { cout << "A::display()" << endl; }};class Demo {public: Demo(A& ra):ptr(&ra){} A* operator->(){return ptr;}private: A* ptr;};cl...原创 2020-01-09 23:17:51 · 372 阅读 · 0 评论 -
C++拆分字符串
#include <vector>#include <string>#include <iostream>using namespace std;const vector<string> explode(const string& s, const char& c){ string buff{""}; vector&...原创 2019-12-31 01:59:38 · 534 阅读 · 0 评论 -
C++控制台颜色简单设置
#include<windows.h>#include<iosfwd>namespace color_mystd{#ifndef CONCOL#define CONCOL enum concol { black=0, dark_blue=1, dark_green=2, dark_aqua,dark_cyan=3, dark_red=...原创 2019-12-31 01:45:31 · 1346 阅读 · 0 评论 -
C++11、14、17避免错误
在C ++ 11发布之后,现代C ++一词变得非常流行。这是什么意思?首先,现代C ++是一组模式和习惯用法,旨在消除旧有的“带类C”的缺点,以至于许多C ++程序员已经习惯了,尤其是如果他们开始使用C进行编程。C ++ 11看起来更简洁易懂,这非常重要。人们在谈论现代C ++时通常会想到什么?并行性,编译时计算,RAII,lambda,范围,概念,模块以及标准库的其他同等重要的组件(例如,用...原创 2019-12-31 01:29:55 · 843 阅读 · 0 评论 -
拷贝构造函数和赋值运算符重载的区别
先看一个实例:#include<iostream>using namespace std;class Demo{public: //构造函数 Demo(int num) { m_num = num; printf("constructor\n"); } //拷贝构造函数 Demo(const ...原创 2019-12-16 23:46:58 · 413 阅读 · 0 评论 -
字符数组和字符串数组
先来个实例看看: char str[] = { 'x','2','w' }; // 字符数组 char str2[] = "x2w"; // 字符串数组 printf("%s\n", str); printf("%s\n", str2);1、字符数组: 具有数组的特性。char str[] = { 'x','2','w' };...原创 2019-12-15 18:46:48 · 662 阅读 · 0 评论 -
C/C++指针汇总[备查]
时间长了容易和其他的记混。特记录一下:1.指针变量基本概念1.1、变量三要素: (1)数据类型 [按对象性质不同分为不同的子集] (2)变量名 [方便写代码,左值时赋值 右值时取值] (3)存放变量的内存地址 [变量本身占用系统内存的位置,变量本身需要分配内存,指针变量也一样,都是分配后不变的]1.2、基本数据类型: (1)C语言中有四种:ch...原创 2019-12-15 15:03:05 · 337 阅读 · 0 评论 -
C++定义类对象注意事项
#include <iostream>using namespace std;class background_task{public: background_task() { cout << "默认构造" << this->m_num << endl; } background_task(int num) { t...原创 2019-12-14 21:45:08 · 500 阅读 · 0 评论 -
C++左值引用和右值引用
以下汇编都是x86汇编写一段简单的语句,看其汇编int i = 1;int & ii = i;0x080483f3 movl $0x1,-0x10(%ebp)0x080483fa lea -0x10(%ebp),%eax0x080483fd mov %eax,-0x8(%ebp)第一句是将1赋值给i,第二句将i的地址放入eax中,第三句将ea...原创 2019-12-14 19:39:47 · 256 阅读 · 0 评论 -
C++标准库头文件说明
1. 头文件分类(C++ 11)类别头文件算法库(Algorithms)< algorithm >C库封装(C library wrappers)<cassert>, <cctype>, <cerrno>, <cfenv>, <cfloat>, <cinttypes>, <cis...原创 2019-12-09 20:18:42 · 465 阅读 · 0 评论 -
C++构造和析构
1.构造:1.1 构造函数时编译器过程:(编译器为每个含有虚函数的类都准备一个vftable表) (1)无父类无虚函数,直接调用本类构造函数执行代码 (2)无父类有虚函数,有虚函数时将本类的vftable直接赋给this[this局部变量就是栈地址,new就是malloc分配的地址]首地址,如果有初始化列表,在执行初始化列表进行赋值,最后在执行本类的构造函数内的代码; (3...原创 2019-12-08 20:37:16 · 239 阅读 · 0 评论 -
c++的常用库
C++ 资源大全关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。标准库C++标准库,包括了STL容器,算法和函数等。C++ Standard Library:是一系列类和函数的集合,使用核心语言编写,也是C++ISO自身标准的一部分。 Standard Template Library:标...原创 2019-11-21 01:09:10 · 277 阅读 · 0 评论 -
早/晚绑定区别
template1.h#pragma once// 程序库开发人员class Library1{public: void step1() {} void step3() {} void step5() {} virtual ~Library1() {}};// 应用开发人员class Application1 : public Library1{public:...原创 2019-11-15 21:05:36 · 253 阅读 · 0 评论 -
C++11 常用语法
1 新类型C++ 11新增了long long和unsigned long long,以支持64bit宽度; 新增char16_t和char32_t以支持16位和32位字符表示; 增加了“原始”字符串。 2 初始化C++ 11扩展了大括号{}的适用范围,既可以用于基本类型,也可以用于自定义类型:int x = {5};couble y{3.5};short q...转载 2018-11-26 22:08:08 · 574 阅读 · 0 评论 -
程序编程基础(归纳)
本系列文章由jadeshu编写,转载请注明出处。https://blog.youkuaiyun.com/jadeshu/article/details/85137936作者:jadeshu 邮箱: jadeshu@qq.com 欢迎邮件交流 有不正确的地方请指正,学习内容还需要深入一.程序基础(重点)1.1为什么需要操作系统? 因为在以前是直接操作硬件之上的,这样每个硬件...原创 2018-12-20 20:25:49 · 1574 阅读 · 0 评论 -
备查容易混淆概念
做个记录,容易混淆!1.栈地址方向和buf地址方向不同概念 2.大端和小端 低位存低地址,高位存高地址-----》小端 (x86) 高位存低地址,低位存高地址-----》大端...原创 2018-12-16 00:26:30 · 292 阅读 · 0 评论 -
面向对象的多态性(C++)
以C++为例三大特效:封装、继承、多态,面向对象的编程语言都具有这些特性。那么本节来谈谈多态性,尽量说的简单些容易理解!多态什么意思?即运行时多态,以相同的方式处理不同类型的对象,产生不同的结果!请说人话,官方定义看不懂。。。。。。多态即多种形态1.普通函数的处理 首先需要知道在C++中对于类的处理,也是相当于把类转化为C的结构体的处理。让我们先来了解C++对于成员函...原创 2019-02-12 22:08:32 · 490 阅读 · 0 评论 -
C++重载操作符自增自减
#include <iostream>using namespace std;class Test { // 无法用cout的成员函数operator<<()去处理,不能改变库内代码,只能用友元函数 friend ostream& operator<<(ostream& os, const Test& t);publ...原创 2019-03-05 01:55:03 · 375 阅读 · 0 评论 -
C++/JAVA/C#子类调用父类函数情况[留存]
时间久了就容易记不清了,特留存备用查看c++1.构造函数调用 常用初始化列表 或者显示调用1.1同一个类中构造函数调用构造函数 尽量不要这样做,因为结果不确定!避免麻烦(C++11增加这方面能力,需在初始化列表中进行操作) ***可以把共用的代码封装成一个私有的成员函数,然后在构造函数内统一调用。1.2子类构造函数调用基类构造函数-----基类有默认构造函数...原创 2019-02-26 16:40:36 · 654 阅读 · 0 评论 -
iterator与const_iterator
iterator与const_iterator所有的标准库容器都定义了相应的迭代器类型。迭代器对所有的容器都适用,现代 C++ 程序更倾向于使用迭代器而不是下标操作访问容器元素。1.iterator,const_iterator作用:遍历容器内的元素,并访问这些元素的值。iterator可以改元素值,但const_iterator不可改。跟C的指针有点像(容器均可以++iter,而...原创 2019-03-08 20:05:48 · 176 阅读 · 0 评论 -
函数指针和指针函数,数组指针和指针数组,常量指针和指针常量
原创 2019-03-08 20:08:17 · 240 阅读 · 0 评论 -
C++对象赋值问题
原创 2019-03-08 20:10:10 · 1212 阅读 · 0 评论 -
C++ Const指针
原创 2019-03-08 20:17:48 · 374 阅读 · 0 评论 -
C++内存分区:堆、栈、自由存储区、全局/静态存储区和常量存储区
日志 返回日志列表C++中,内存分为5个区:堆、栈、自由存储区、全局/静态存储区和常量存储区2012-1-13 16:23 C++中,内存...原创 2019-03-09 03:04:49 · 578 阅读 · 0 评论 -
map-有序 multimap-可重复 unordered_map-无序
#include <iostream>#include <vector>#include <map>#include <unordered_map>#include <algorithm>using namespace std;void OutPut(char val){ cout << val &l...原创 2019-03-24 21:51:15 · 908 阅读 · 0 评论 -
C++ cout格式化输出
表1:C++ 流操纵算子 流操纵算子 作 用 *dec 以十进制形式输出整数 常用 hex 以十六进制形式输出整数 oct 以八进制形式输出整数 fixed 以普通小数形式输出浮点数 scientific 以科学计数法形式输出浮点数 left 左对齐,即在宽度不足时将填充字符添加到右边 *right 右对齐,即在...原创 2019-03-24 14:40:23 · 239 阅读 · 0 评论 -
C++类*类型和其他类型相互转换(转换函数)
类类型转换时会出现两种之间转换,下面我们说的是类类型1.其他类型转换为本类类型 通过类带一个参数的构造函数;或者多个参数构造函数,除了第一个参数后面参数都有默认值时!这样在其他类型赋值给该类类型对象时会发生隐式转换。#include <string>#include <iostream>using namespace std;class Test{...原创 2019-04-09 02:48:51 · 1468 阅读 · 0 评论 -
gcc编译流程
GCC编译流程如下图所示:GCC 编译器在编译一个C语言程序时需要经过以下 4 步:将C语言源程序预处理,生成.i文件。 预处理后的.i文件编译成为汇编语言,生成.s文件。 将汇编语言文件经过汇编,生成目标文件.o文件。 将各个模块的.o文件链接起来生成一个可执行程序文件。.exe/.outgcc -E xx.c -o xx.i 预处理gcc -S xx.i ...原创 2019-07-16 00:06:02 · 377 阅读 · 0 评论 -
C++类中函数(构造函数、析构函数、拷贝构造函数、赋值构造函数)
【1】为什么空类可以创建对象呢?示例代码如下:#include <iostream>using namespace std;class Empty{};void main(){ Empty obj1; cout << sizeof(Empty) << endl; // 1}让我们先看看这个例子。既然都没有构造函...转载 2018-09-02 00:21:41 · 474 阅读 · 0 评论 -
C++ explicit
C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明, 即...转载 2018-09-01 23:16:36 · 197 阅读 · 0 评论 -
c++问题集合
1.对于程序运行后的代码段到底存储什么?2.编写程序时为什么先申请变量后使用?3.malloc本质到底分配了什么?谁赋给的?4.程序在系统上是怎么运行起来的?5.当我们双击一个程序运行时,它是如何被加载入内存的和区分导入和导出函数各种段和数据等等问题的呢?(提示:PE)6.我们知道CPU读取代码指令CS:IP位置和各种段寄存器+常用寄存器,全局和局部描述表基址寄存器,各种段和源原创 2016-12-14 19:04:04 · 333 阅读 · 0 评论 -
格式转化字符及其含义
printf 函数中的格式转化字符及其含义格式转换符含义对应的表达式数据类型%d 或 %i以十进制形式输出一个整型数据有符号整数%x 或 &X以十六进制格式输出一个无符号整型数据无符号整数%o以八进制格式输出一个无符号整型数据无符号整数转载 2016-12-22 02:27:43 · 1490 阅读 · 0 评论 -
字符通用函数和单字节多字节版本
Tchar.h 例程未定义 _UNICODE 和 _MBCS已定义 _MBCS已定义 _UNICODE_tprintfprintfprintfwprintf_tprintf_l_printf_l_printf_l_wprintf_l_tprintf_sprintf_sprintf_swprintf_s_原创 2017-05-02 21:48:50 · 542 阅读 · 0 评论 -
C++11---nullptr
【1】关于0 与 NULL#ifndef NULL#ifdef __cplusplus#define NULL 0#else #define NULL ((void*)0)#endif#endif【2】关于nullptr和void*的称法nullptr习惯被称作指针空值void*习惯被称作无类型指针【3】nullptr 和 nullptr_tnu...转载 2018-09-01 22:45:18 · 310 阅读 · 0 评论 -
C++11—lambda函数
【1】lambda表达式语法定义 lambda表达式的语法定义如下: [capture] (parameters) mutable ->return-type {statement}; (1) [capture]: 捕捉列表。捕捉列表总是出现在lambda函数的开始处。实质上,[]是lambda引出符(即独特的标志符) 编译器根据该引出符判断接下来的代码是否是lamb...转载 2018-09-01 22:37:05 · 726 阅读 · 0 评论