![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++基础知识
文章平均质量分 80
Nicolas_Xu
一位精通法语的程序员
展开
-
C++易混知识点1: 指针常量和常量指针的区别,附有详细案例解释
熟悉C++也已经有一些年头了,今天突然翻出当年浏览的书籍,对一些概念居然生疏了,指针常量和常量指针由于 指针 这一特殊的对象而变得难以区别。今天将他们的区别通过详细的案例来加以区分。原创 2015-01-22 10:06:30 · 859 阅读 · 0 评论 -
C++ JAVA下回调函数机制和原理比较分析
何为回调函数,关键二字在于回调,意思就是可以方便的回去调用某个函数。#include void printWelcome(int len){ printf("欢迎欢迎 -- %d/n", len);} void printGoodbye(int len){ printf("送客送客 -- %d/n", len);} void callb原创 2015-11-04 16:21:43 · 933 阅读 · 0 评论 -
C++基础知识: 公有继承,保护继承,私有继承的总结,私有继承的用意何在
今天被问到C++中私有继承的作用是什么?第一反应是关于访问权限的改变,基类被子类私有继承后,基类中即使是共有public,保护protected的成员变量或者成员函数都会在子类中变为私有成员和私有成员变量,子类的派生类或者子类的对象再也无法访问这些成员和成员变量。其实,这个回答只答出了最为基本的概念,那就是私有继承对访问权限的改变。 但是,更为深处的理解是,既然私有继承这么小众化,为什原创 2015-12-11 00:15:55 · 1188 阅读 · 0 评论 -
Linux:多进程访问同一文件,如何用文件锁进行保护, fcntl()详解
在Linux系统中,进程运行在自己的虚拟内存空间中,如何协调不同虚拟地址空间中的进程访问一个非共享资源,文件加锁是基本进程通信方法之一。 可以使用fcntl()、lockf()、flock()实现文件锁,进而实现进程之间的通信。 1.fcntl()【函数介绍】调用形式(执行失败返回-1):int fcntl(int fd,int cmd);转载 2015-12-04 15:20:25 · 3179 阅读 · 0 评论 -
gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
一、概述C和C++编译器是集成的,编译一般分为四个步骤:预处理(preprocessing)编译(compilation)汇编(assembly) -------------------- as连接(linking) --------------------- ld gcc 认为预处理的文件是(.i)是C文件,并且设定C形式的连接;g++ 认为转载 2015-04-14 16:35:22 · 23391 阅读 · 5 评论 -
二叉树的深度优先遍历与广度优先遍历 [ C++ 实现 ]
转自于 : http://www.blogjava.net/fancydeepin/archive/2013/02/03/395073.html深度优先搜索算法(Depth First Search),是搜索算法的一种。是沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点v的所有边都己被探寻过,搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现转载 2016-05-11 13:33:21 · 2935 阅读 · 0 评论 -
详解C/C++语言中Static 变量 或者 static函数的作用
1. 今天被问到C语言中Static假如修饰一个函数的话,这个Static 起到什么作用。之前因为特别注意到这个问题,但一时之间可能说不出全部,我回答了关于 作用域的区别,其实是对的,因为其他文件无法访问这个函数了,static把这个函数局限于在这个文件当中,某种意义上“隐藏了”这个函数,但不够具体。 在某个文件中,例如a.cc文件中,假如我们定义如下char a = 'A';原创 2016-05-13 14:29:57 · 726 阅读 · 0 评论 -
详解C++各种智能指针: auto_ptr, shared_ptr, weak_ptr, scoped_ptr
C++ 中经常被问到的一个问题就是如何分辨各种智能指针。 先归纳起来做一个综合的比较: auto_ptrauto_ptr是现在标准库里面一个轻量级的智能指针的实现,存在于头文件 memory中,之所以说它是轻量级,是因为它只有一个成员变量(拥有对象的指针),相关的调用开销也非常小。auto_ptr在03标准中出现,是最早的C++标准库里的智能指针,主要是通过将指针通转载 2016-05-13 16:57:48 · 12026 阅读 · 0 评论 -
C++11新特性: 右值引用 和 右值语义(rvalue sematics)
转载于 http://blog.csdn.net/zwvista/article/details/12306283#comments 右值引用为了解决移动语义及完美转发问题,C++11标准引入了右值引用(rvalue reference)这一重要的新概念。右值引用采用T&&这一语法形式,比传统的引用T&(如今被称作左值引用 lvalue reference)多一个&转载 2016-05-09 12:43:14 · 1236 阅读 · 0 评论 -
Makefile 中命令的@,-@,+@符号 作用, 案例分析
make/makefile中的加号+,减号-和at号@的含义shell 命令每个目标都可以具有与其关联的一系列 shell 命令,这些命令通常用来创建目标。此脚本中的每一条命令都必须以制表符开始。虽然任何目标都能够显示在相关性行上,但除非使用 :: 操作符,否则这些相关性中只有一个能够通过创建脚本来跟随。如果命令行的第一个或前两个字符是 @ (at 符号)、原创 2016-07-12 10:33:49 · 11641 阅读 · 0 评论 -
Linux下创建维护服务进程Daemon的注意点,附有详细案例讲解
unix系统下所有进程都工作在前台和后台,在前台工作的进程通常和用户直接交互(通常是通过terminal,比如我们ls -ltr,会在当前terminal显示文件列表),但是在后台运行的进程都是自己运行。用户可以检查它的工作状态,但是不知道它在干嘛。维护进程指的就是这种工作在后台的进程。接下来分几步来讲解下如何创建一个维护进程,并且实现标准输入输出重定向的工作。1. 维护进原创 2015-04-28 16:55:53 · 730 阅读 · 0 评论 -
unix/linux创建新进程,父子进程详解,附有案例
fork()用来创建进程fork(void)在linux中所有进程都是由init进程直接或间接创建成功:在父进程中将返回子进程的PID;子进程返回0,以区别父进程失败:父进程中返回-1 1 #include 2 #include 3 #include 4 5 int main(int argc,char *argv[]) 6 {转载 2015-04-28 10:25:18 · 8300 阅读 · 0 评论 -
C++易混知识点2. 函数指针和指针函数的区别
我们时常在C++开发中用到指针,指针的好处是开销很小,可以很方便的用来实现想要的功能,当然,这里也要涉及到指针的一些基本概念。指针不是基本数据类型,我们可以理解他为一种特殊类型的对象,他占据一定空间,但是所带来的好处就是C++如此强大的深层次原因了。1. 指针函数, ( __type__ * func( void, int,) )顾名思义,他是一个函数,只不过和一般函数区分原创 2015-01-22 14:41:38 · 565 阅读 · 0 评论 -
C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting
这篇文章建大的介绍了如何编写一个智能指针。介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存。不必担心内存泄露的问题。实际上,智能指针是一个行为类似于指针的类,通过这个类我们来管理动态内存的分配和销毁。方便客户端的使用。相比于一般指针,智能指针主要体现在它使用的容易和便捷性。原创 2015-01-28 15:25:24 · 776 阅读 · 0 评论 -
C++易混知识点3. New Operator, Operator New, Placement New 实例分析,比较区别
我们知道,C++中引入了New 这个内置符号,很大方便了指针的使用,程序员不必关注与这块堆上新分配的内存是如何来的,如何初始化的,然后如何转换为我们想要的类型指针的。现在,我们重点来分析下这个NEW内置符号背后的步骤和所调用到的函数。1. New Operator (__type__ * a = new a();)C 语言当中,我们在新申请一块内存的时候,通常使用的是malloc,原创 2015-01-23 14:28:27 · 717 阅读 · 0 评论 -
C++易混知识点5:实例讲解Public Protected Private作用域,继承的区别和用意
大学生涯,涉及到类的作用域,继承都是用的public 共有继承,当时也没想那么多,觉得共有继承多方便,多简单,反正没有太多的限制,不管是类的成员或者是基类的成员函数都可以访问。没有深究。其实这里面真是涉及到了C++面向对象设计当中的封装特性。只暴露那些需要的成员和成员函数,不必过多曝露所有的成员。第一:private、public、protected访问的范围。 pr原创 2015-01-30 14:51:59 · 1867 阅读 · 0 评论 -
Linux环境编程1. 实例详解文件锁(file lock)的两种不同类型,advisory lock和mandatory lock
文件锁(File Lock)是一种在特定的时间内只允许一个进程进行访问文件的机制,通过使用文件锁,可以使得多进程访问文件更加安全。在这片文章中,我们会探索两种不同的文件锁,并且通过实际案例去了解他们的机制和不同之处。我们会举以下两个例子来解释为什么文件锁(file lock)是必须的原创 2015-02-06 15:30:59 · 7861 阅读 · 0 评论 -
编写一个简单的license文件控制器
编写一个很简单的通过文件内容读取相关key/value的权限控制器:文件内容可以如下:#注释Car.IsPrivate True通过阅读以上的文件来获得软件所有的权限控制。1. 先编辑一个存储 key/value 对的数据结构 KVPairstruct KVPair { KVPair(void) : _keu(), _val原创 2015-04-14 10:00:57 · 1218 阅读 · 0 评论 -
Linux 下 套接字 Socket 通信原理和实践,附有详细案例
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:1、网络中进程之间如何通信?2、Socket是什么?转载 2015-04-15 10:18:13 · 3838 阅读 · 3 评论 -
C++易混知识点 6: 如何通过生命周期使用mutex互斥锁自动加锁和释放
在涉及到多线程操作的时候,对于那些静态变量我们一定要加以保护。我们通常会使用到的是互斥锁,通过对锁的获取和释放来保证始终只有一个线程对关键数据进行操作,但这样带来的问题也是很直接的: 繁琐的操作。1. 首先我们先定义一个互斥锁的类,class EfMutex{ public: EfMutex(int type = PTHREAD_MUTEX_RECURSIVE) :原创 2015-04-15 14:36:24 · 1833 阅读 · 0 评论 -
unix/linux下信号处理函数Signal()详解
signal()函数理解在 这个头文件中。signal(参数1,参数2);参数1:我们要进行处理的信号。系统的信号我们可以再终端键入 kill -l查看(共64个)。其实这些信号时系统定义的宏。参数2:我们处理的方式(是系统默认还是忽略还是捕获)。一般有3中方式进行操作。(1)eg: signal(SIGINT ,SIG_ING );//SI转载 2015-04-28 10:08:10 · 7212 阅读 · 1 评论 -
详解如何编译一个跨平台GCC
How to Build a GCC Cross-CompilerGCC is not just a compiler. It’s an open source project that lets you build all kinds of compilers. Some compilers support multithreading; some support shared li转载 2016-06-22 13:22:28 · 5691 阅读 · 0 评论