
c++
文章平均质量分 67
雪不化花不开
这个作者很懒,什么都没留下…
展开
-
Clean C++ 第六章杂记
6.1 面向对象思想:OOP意味着消息传递,进程状态的本地保存,保护和隐藏,以及后期绑定。6.2 类的设计原则:一。 让类尽可能小尽量避免创造出上帝类:啥都管的那种。当然要结合实际情况,现实中,很多controller, manager, helper.保持类的小体量。(把实现丢到cpp里面做)。小更容易测试,维护和理解。二 单一职责原则(SRP)每个软件单元,函数,类和组件,都应该只有一个单一且明确的职责。什么是单一职责? 一个类只有一个理由更改它,一个类既有UI又有驱动,就存在两个原创 2021-09-05 15:46:46 · 316 阅读 · 0 评论 -
ELF中目标文件的符号
0x00什么是目标文件的符号符号(symbol)是一个字符串用来标志不同类型(函数,全局变量,静态变量等)。链接器通过查询不同的目标文件(objectfile)的符号表来链接生成可执行文件(binary file)。符号扮演者对外的一些接口,通过查看目标文件或共享目标文件(so),可以定位到需要使用的API函数,或者外部全局变量。0X01具体用法通过一个简单的c语言程序来简单查看一下symbol。#include <stdio.h>int initGloabl...原创 2020-08-16 19:04:15 · 772 阅读 · 0 评论 -
std::move实操
1.用法std::move用来指示对象t可以“被移动”, 即允许从t到另一种对象的高效率的转换效果就是static_cast强转的作用。通过把左值的数据转换成右值,如果push_back,之后就可以直接传递指针。2.官方例子#include <iostream>#include <utility>#include <vector>#incl...原创 2019-06-02 23:17:42 · 1612 阅读 · 0 评论 -
lambda在C++中的运用(译stack overflow)
问题c++中有类似std::for_each和std::transform的泛型函数(generic functions)使用起来非常方便.但仿函数运用在这种特殊的函数(即指上面的generic functions),却存在着问题,如下:#include <algorithm>#include <vector>namespace { struct f {...翻译 2018-07-19 22:20:45 · 376 阅读 · 0 评论 -
常见的排序算法总结
#include<cstdio>/*算法只是比较了元素为整数的内容.大部分的排序只是做了简单的测试.仅供参考.*/void swap(int *a , int *b){ int temp = *b; *b = *a; *a = temp;}bool less(int a, int b){ if(a < b) return t...原创 2018-04-12 11:09:24 · 183 阅读 · 0 评论 -
How to use epoll? A complete example in C
How to use epoll? A complete example in C具体的demo可以看链接给的源码<在文末有>.Thursday, 2 June 2011 @ 1238 GMT by Mukund SivaramanNetwork servers are traditionally implemented using a separate process or thre...转载 2018-03-19 08:42:39 · 465 阅读 · 0 评论 -
C++经典面试题
1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变量。(2)在栈上创建:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)用malloc或new申请内存之后,应该立即...转载 2018-03-05 10:51:40 · 474 阅读 · 0 评论 -
C语言宏中"#"和"##"的用法
C语言宏中"#"和"##"的用法 在查看linux内核源码的过程中,遇到了许多宏,这里面有许多都涉及到"#"和"##",因此,在网上搜索了一些资料,整理如下:一、一般用法 我们使用#把宏参数变为一个字符串,用##把两个宏参数贴合在一起. 用法: #include #include using namespace std; #define STR(s)转载 2017-12-27 15:15:46 · 3147 阅读 · 0 评论 -
undefined reference to `pthread_create'解决
正确编译多线程方法:gcc -pthread -o term term.c转载 2017-11-21 20:28:53 · 10977 阅读 · 5 评论 -
C表达式((void (*)(void))0();
C表达式((void (*)(void))0();通过一步步来讲解: 没有参数和不返回值void f(void)定义一个指针没有参数和返回值void (*p)(void)定义一个仅有类型的指针(void(*))(void)定义一个强转类型(类型定义在括号内,跟着一个值)(void (*)(void))0到目前为止我们定义了一个由0强转成一个指向函数且返回值。这个转换时一个指针到函数的类型。(yo翻译 2017-11-17 22:13:45 · 1760 阅读 · 1 评论 -
vim下设置tab来实现C原因对齐
首先来的当前用户的主目录下$cd ~$vim .vimrc在.vimrc中添加set ts=4set expandtabset autoindent转载 2017-10-31 21:47:45 · 430 阅读 · 0 评论 -
脚本语言和编程语言的区别
脚本语言是一个不需要显示编译的编程语言例如,在日常例子中,你必须要编译一个C语言程序,在你运行他们之前.但在通常情况下,你不用编译一个JavaScript程序,在你使用他们之前.因此呢,JavaScript经常被称为"脚本语言".在现代硬件和现代编译技术下,编译已经变得越来越快导致脚本语言和传统的编程语言之间的界限不在那么明显.例如,V8作为Google Chrome浏览器的引擎,翻译 2017-04-15 22:05:31 · 68569 阅读 · 9 评论 -
10分钟了解c++中vector基本内容
标准容类型vector:首先,vector是一个相同类型的集合,存放相同类型的数据.要使用它的头文件,并且使用命名空间,usingstd::vector;引出c++类模板和函数模板.这里的vector是一个类模板.模板本身不是类也不是函数,可以把模板看成是要生成类或者函数的一份说明.编译器根据模板创建类或者函数的过程称为实例化,也就是说需要指定模板需要转化成什么类型?提供的信息:在模板原创 2017-04-15 10:44:30 · 635 阅读 · 0 评论