![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【旧】C与C++
C与C++语法与库
猴子居士
这个作者很懒,什么都没留下…
展开
-
单例模式C++实现
单例模式和工厂模式C++实现参考文章: 1、https://blog.csdn.net/ygm_linux/article/details/50819668 2、https://blog.csdn.net/linwh8/article/details/512328341、单例模式(懒汉式)class Singleton {private: Singleton() ...原创 2018-09-02 09:08:13 · 266 阅读 · 0 评论 -
从一维数组角度,理解二维数组
二维数组的理解:int a[3][4];若序号规定从0开始计数。1、可认为是一个一维数组,数组元素类型为int x[4],即4个int类型元素组成的一维数组。2、在连续空间分布为:[[int, int, int, int], [int, int, int, int], [int, int, int, int]]3、不变道理:数组名表示数组首元素地址。4、不变道理:若a为指针,则a[n]等价于*(a+n)5、a表示一维数组首元素地址,即第0个[int, int, int, int]地址。6、原创 2021-01-09 23:39:30 · 162 阅读 · 0 评论 -
【Tips】深入理解C++11
【Tips】深入理解C++11@原创 2020-03-30 22:28:10 · 149 阅读 · 0 评论 -
【Tips】C++语言程序设计
##【Tips】C++语言程序设计原创 2020-03-30 21:57:05 · 246 阅读 · 0 评论 -
一些题目和代码
@ 声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是(C)(int *p[10])(int*)int [10]*p(int *)int (*(*p)[10])(int *)int ((int *)[10])*p@ 下述程序的输出是______。#include<stdio.h> int main()...原创 2020-03-25 22:04:30 · 410 阅读 · 0 评论 -
C语言中的未定义行为(Undefined Behavior)
C语言中的未定义行为(Undefined Behavior)C语言中的未定义行为(Undefined Behavior)是指C语言标准未做规定的行为。同时,标准也从没要求编译器判断未定义行为,所以这些行为有编译器自行处理,在不同的编译器可能会产生不同的结果,又或者如果程序调用未定义的行为,可能会成功编译,甚至一开始运行时没有错误,只会在另一个系统上,甚至是在另一个日期运行失败。当一个未定义行为的...原创 2019-10-26 11:09:09 · 3705 阅读 · 0 评论 -
【专业技术】C++ RTTI
RTTIRTTI(Run-Time Type Information)运行时类型检查的英文缩写,它提供了运行时确定对象类型的方法。面向对象的编程语言,象C++,Java,delphi都提供了对RTTI的支持。 本文将简略介绍 RTTI 的一些背景知识、描述 RTTI 的概念,并通过具体例子和代码介绍什么时候使用以及如何使用 RTTI;本文还将详细描述两个重要的 RTTI 运算符的使用方法,它们是...原创 2019-10-19 20:58:32 · 207 阅读 · 0 评论 -
C++ 虚函数表剖析
一、概述为了实现C++的多态,C++使用了一种动态绑定的技术。这个技术的核心是虚函数表(下文简称虚表)。本文介绍虚函数表是如何实现动态绑定的。二、类的虚表每个包含了虚函数的类都包含一个虚表。我们知道,当一个类(A)继承另一个类(B)时,类A会继承类B的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说,一个类继承了包含虚函数的基类,那么这个类也拥有自己的虚...原创 2019-10-13 17:33:20 · 147 阅读 · 0 评论 -
派生类的内存大小(sizeof)举例
派生类的内存大小(sizeof)举例代码:#include &amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;using namespace std;class A {public: virtual void func1() {}};class B {public: virtual void func2() {}};class C : public A, public原创 2018-08-26 18:35:06 · 1036 阅读 · 0 评论 -
C++之关于mutable
C++之关于mutable代码:#include <iostream>using namespace std;class A {public: A() : a(0) {} void func() const { a = 3; }private: mutable int a;};int main() { ...原创 2018-08-23 11:01:52 · 203 阅读 · 0 评论 -
strcpy/strlen/strcat/strcmp的实现
strcpy/strlen/strcat/strcmp的实现一、字符串拷贝strcpy函数strcpy的原型是char* strcpy(char* des , const char* src),des 和 src 所指内存区域不可以重叠且 des 必须有足够的空间来容纳 src 的字符串。#include &amp;lt;assert.h&amp;gt;#include &amp;lt;stdio.h&amp;...原创 2018-09-03 10:08:25 · 385 阅读 · 0 评论 -
STL中不同容器的删除操作
STL中不同容器的删除操作参考资料:effective STL说明/* 说明: 1、对于顺序容器,如vector、deque和string等,删除操作应该用如下形式: vec.erase(remove(vec.begin(), vec.end(), 5), vec.end()); 2、对于list,上述1的方法也可以,但是效率的话,应该使用如下形式: ali...原创 2018-08-22 16:23:25 · 196 阅读 · 0 评论 -
C++菱形继承内存布局的探索
C++菱形继承的探索参考文章: 1、https://blog.csdn.net/haoel/article/details/3081328 2、https://blog.csdn.net/castle_kao/article/details/71024411实验1:运行环境: ubuntu16.04,g++5.4.0 代码:#include &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;iostream&a原创 2018-08-26 10:44:59 · 1625 阅读 · 0 评论 -
C++四种智能指针梳理
C++四种智能指针梳理参考资料 1、C++智能指针梳理 https://blog.csdn.net/shuishanga/article/details/52982102 2、C++智能指针简单剖析 http://www.cnblogs.com/lanxuezaipiao/p/4132096.html...原创 2018-08-16 22:33:20 · 1512 阅读 · 0 评论 -
浅谈C++模板元编程
浅谈C++模板元编程待编辑原创 2018-08-09 00:15:26 · 4580 阅读 · 0 评论 -
C++的智能指针之shared_ptr
C++的四种智能指针原创 2018-08-09 00:14:35 · 272 阅读 · 0 评论 -
显式调用构造函数的小测试
显式调用构造函数的小测试代码:#include &amp;lt;iostream&amp;gt;using namespace std;class A {public: A() {cout &amp;lt;&amp;lt; &quot;A()&quot; &amp;lt;&amp;lt; endl;} ~A() {cout &am原创 2018-08-08 21:05:20 · 493 阅读 · 0 评论 -
C++关于虚析构函数例子
C++关于虚析构函数例子代码:#include <iostream>using namespace std;class Base {public: Base() { cout << "Base()" << endl; } virtual ~Base() { cout << "...原创 2018-08-23 11:15:27 · 348 阅读 · 0 评论 -
【问题记录】二维数组初始化
【问题记录】二维数组初始化代码:#include &amp;lt;iostream&amp;gt;using namespace std;int main() { int m = 3, n = 4; int a[m][n] = {0}; return 0;}环境:linux,g++现象:m和n的数值改变未随机数。...原创 2018-08-20 18:47:44 · 176 阅读 · 0 评论 -
vector定义与初始化的巧妙用法
vector定义与初始化的巧妙用法例子1:代码:#include &lt;iostream&gt;#include &lt;vector&gt;using namespace std;int main() { vector&lt;int&gt; mat[8](vector&lt;int&gt;(3)); for(int i = 0;i &原创 2018-08-21 13:25:05 · 1270 阅读 · 0 评论 -
C++中 overload 、override、overwrite 之间的区别
C++中 overload 、override、overwrite 之间的区别Overload、Overwrite和Override的概念比较容易混淆,而且Overwrite和Override的中文翻译五花八门,让人很Confuse,顾保持英文原意:Overload 重载在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同),即函数重载。...原创 2018-04-12 21:32:06 · 196 阅读 · 0 评论 -
深入理解C++11【3】
深入理解C++11【3】【深入理解C++11【3】】1、POD类型Plain Old Data. Plain 表示 了POD是个普通的类型。C++11将POD划分为两个基本概念的合集:1)平凡的(trivial)2)标准布局的(standard layout)一个平凡的类或结构体应该符合以下定义:1)拥有平凡的默认构造函数(trivial constructor)和析构函数(triv...原创 2019-07-13 12:06:56 · 341 阅读 · 0 评论 -
深入理解C++11(5)
深入理解C++11(5)【深入理解C++11【5】】1、原子操作与C++11原子类型C++98 中的原子操作、mutex、pthread:复制代码#include<pthread.h>#include <iostream>using namespace std;static long long total = 0;pthread_mutex_t m = P...原创 2019-07-13 11:57:39 · 648 阅读 · 0 评论 -
深入理解C++11(2)
【深入理解C++11(2)】【深入理解C++11【2】】1、继承构造函数。当基类拥有多个构造函数的时候,子类不得不一一实现。C++98 可以使用 using 来使用基类的成员函数。复制代码#include < iostream> using namespace std; struct Base { void f( double i){ cout...原创 2019-07-13 11:31:43 · 263 阅读 · 0 评论 -
深入理解C++11(1)
【深入理解C++11(1)】【深入理解C++11】1、很多 现实 的 编译器 都 支持 C99 标准 中的__ func__ 预定 义 标识符 功能, 其 基本 功能 就是 返回 所在 函数 的 名字。编译器 会 隐式 地 在 函数 的 定义 之后 定义__ func__ 标识符。const char* hello() { static const char* __func__...原创 2019-07-13 11:19:36 · 551 阅读 · 0 评论 -
深入理解C++11(4)
【深入理解C++11(4)】【深入理解C++11【4】】1、基于范围的 for 循环C++98 中需要告诉编译器循环体界面范围。如for,或stl 中的for_each:复制代码int main() { int arr[ 5] = { 1, 2, 3, 4, 5}; int * p; for (p = arr; p < arr + sizeof( a...原创 2019-07-13 11:11:17 · 298 阅读 · 0 评论 -
一道C++面试题 2018年9月26日
一道C++面试题–以前未见过的语法格式 2018年9月26日#include <iostream>using namespace std;class A {public: void func() = delete;};int main() { return 0;}原创 2018-09-26 18:56:40 · 178 阅读 · 0 评论 -
谈谈C++中map的[]和insert
谈谈C++中map的[]和insert一、测试代码#include &lt;iostream&gt;#include &lt;map&gt;#include &lt;utility&gt;using namespace std;class Sample{ static int _noOfObjects; int _objectNo;public: ...原创 2018-09-04 10:39:59 · 4139 阅读 · 0 评论 -
函数指针--成员函数(静态,非静态)&普通函数
函数指针–成员函数(静态,非静态)&普通函数#include<iostream>using namespace std;class Test{public: //静态成员函数 static void func1(int i) {cout<<++i<<endl;} //非静态成员函数 void func...原创 2018-08-08 10:20:37 · 951 阅读 · 0 评论 -
浅析 C++ 之 RAII
浅析 C++ 之 RAII1.什么是RAII 技术?(参见百度百科相关条目)RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。 RAII 的一般做法是这样的:在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候...原创 2018-08-07 19:16:49 · 127 阅读 · 0 评论 -
c++11:lambda函数及其用法
c++11:lambda函数及其用法为什么需要lambda函数匿名函数是许多编程语言都支持的概念,有函数体,没有函数名。1958年,lisp首先采用匿名函数,匿名函数最常用的是作为回调函数的值。正因为有这样的需求,c++引入了lambda 函数,你可以在你的源码中内联一个lambda函数,这就使得创建快速的,一次性的函数变得简单了。例如,你可以把lambda函数可在参数中传递给std:...原创 2018-07-08 13:25:49 · 1147 阅读 · 0 评论 -
基于c++11的100行实现简单线程池
基于c++11的100行实现简单线程池原文:https://blog.csdn.net/gcola007/article/details/78750220背景刚粗略看完一遍c++ primer第五版,一直在找一些c++小项目练手,实验楼里面有很多项目,但是会员太贵了,学生党就只能google+github自行搜索完成项目了。注:本文纯提供自己的理解,代码完全照抄,有想法的欢迎评论留...原创 2018-07-08 11:58:15 · 994 阅读 · 0 评论 -
C++代码基本优化小技巧
C++代码基本优化小技巧1.不存在指向空值的引用,意味着引用比指针的效率更高,因为在使用引用之前不需要测试它的合法性;指针可以被重新赋值以指向另一个不同的对象,但是引用总是指向它初始化时指定的对象。2.使用位运算代替加减乘除取余等计算。3.用switch代替多层if else,看汇编代码可知,switch有点空间换时间的意思。如果switch不可行,则将最常见的场景放在if分支链的最前...原创 2018-04-21 11:29:09 · 511 阅读 · 0 评论 -
C语言变长数组讲解
C语言柔性数组讲解看如下代码:#include&amp;amp;amp;amp;amp;amp;lt;stdio.h&amp;amp;amp;amp;amp;amp;gt;typedef struct _SoftArray{ int len; int array[];}SoftArray;int main(){ int len = 10; printf(&amp;amp;amp;amp;amp;quot;Th原创 2018-05-08 21:10:31 · 36439 阅读 · 4 评论 -
C++ int long long double 等数据范围!
C++ int long long double 等数据范围由于机型的不同,确实存在int到底是几个字节的问题。具体见下表: 类型 32bit 64bit char 1 1 short int 2 2 int 4 4 long int 4 8 long long int 8 8 cha...原创 2018-04-13 11:29:46 · 2633 阅读 · 0 评论 -
C语言内存字节对齐小结
C语言内存字节对齐小结一、原则:1、结构体内成员按自身按自身长度自对齐。自身长度,如char=1,short=2,int=4,double=8,。所谓自对齐,指的是该成员的起始位置的内存地址必须是它自身长度的整数倍。如int只能以0,4,8这类的地址开始2、结构体的总大小为结构体的有效对齐值的整数倍结构体的有效对齐值的确定:1)当未明确指定时,以结构体中最长的成...原创 2018-04-13 11:14:43 · 373 阅读 · 0 评论 -
面试百度的一道题
面试某互联网公司的一道题如下代码有没有什么问题:// 测试const#include &amp;lt;iostream&amp;gt; using namespace std;void func1(const string &amp;amp;str) { cout &amp;lt;&amp;lt; str &amp;lt;&amp;lt; endl;}voi原创 2018-04-18 12:15:49 · 145 阅读 · 0 评论 -
Pure Virtual Function Call
这里有详细的解释 https://www.codeproject.com/Articles/14879/Pure-Virtual-Function-Call当一个对象包含一个纯虚函数(一个未实现的函数)时,这个对象根本不能被构造,因此纯虚函数不能被称为全部。试试下面的代码:class Parent{public: Parent() { } ~Parent() { C...翻译 2018-04-12 11:30:57 · 7749 阅读 · 1 评论 -
C语言中逻辑操作符的巧妙用法
C语言中逻辑操作符的巧妙用法1、循环左移int型变量循环左移k次,即a = a<<k | a>>16-k (设sizeof(int)=16) 2、循环右移int型变量a循环右移k次,即a = a>>k | a<<16-k (设sizeof(int)=16) 3、整数平均值int average(int x, i...原创 2018-04-17 11:28:02 · 682 阅读 · 0 评论 -
Getmemory的几个经典的关于内存的问题
Getmemory的几个经典的关于内存的问题// TEST1void GetMemory1(char *p){ p = (char *)malloc(100);}void Test1(void) { char *str = NULL; GetMemory1(str); strcpy(str, "hello world"); print...原创 2018-04-08 20:43:00 · 3645 阅读 · 0 评论