关闭

智能指针的底层实现

引入:定义一个类来封装资源的分配和释放,在构造函数完成资源的分配和初始化,在析构函数完成资源的清理。 boost库的智能指针 auto_ptr:资源转移,当使用拷贝构造,赋值操作时将资源转移,并将自己的资源置为空 加权限,当使用拷贝构造,赋值操作时资源不释放,只是将权限改为false,当权限为true时&&资源不为空时,才可以释放资源。 scoped_ptr:...
阅读(32) 评论(0)

c++动态内存管理

c语言中我们学习了malloc,calloc,realloc,free这四个函数,前面都是c语言用来动态申请内存的函数(他们都是在堆上申请内存)最后一个函数是释放前面三个所申请的空间。 返回值:成功的话返回所申请空间的地址,失败返回NULL。 下面我们看看malloc,calloc,realloc他们的不同。 1. malloc:函数原型为void *malloc( size_t size...
阅读(336) 评论(0)

c++-----string和深浅拷贝

深浅拷贝 浅拷贝主要存在的问题就是同一块内存释放多次。所以引入深拷贝来解决这些问题。 下面通过代码看下浅拷贝存在的问题class String { public: String(const char* str); String(String& str); String& operator = (String& str); ~String(); private:...
阅读(48) 评论(0)

c++实现线性表和双向链表

深浅拷贝:深浅拷贝主要解决的问题是同一块内存释放多次 浅拷贝 深拷贝 c++实现线性表 SeqList.h #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include using namespace std; typedef int DataType; class SeqList { pu...
阅读(69) 评论(0)

c++继承(单继承,多继承,菱形继承和虚继承)详解

下面我将从继承实例(代码 ),继承对象模型和原理来分析继承。 单继承 模型 代码class A { public: int _a; }; class B:public A { public: int _b; }; int main() { B b; b._a = 0; b._b = 1; return 0; }代码分析: 多继承 模型...
阅读(109) 评论(0)

c/c++常见面试题(一)

1.c++的三大特性是什么?说说你对面向过程和面向对象的理解? 三大特性是:封装,继承,多态。 面向过程:倾向于做一件事的流程,先做什么,然后做什么,最后做什么。更接近与计算机的实际计算模型 面向对象:倾向于建立一个对象模型,他能够近似的反应实体与实体之间的关系。它具有封装,继承,多态三大特点,更好的提高的代码的安全性和效率。 2.什么是函数重载?c语言为什么不...
阅读(46) 评论(0)

c++日期类

#define _CRT_SECURE_NO_WARNINGS #include #include #include using namespace std;class Date { friend ostream& operator<<(ostream &io, const Date& d); friend istream&...
阅读(63) 评论(0)

c++引用,指针

1.什么是引用 引用不是定义一个变量,而是给一个已经定义的变量新起一个别名 引用的格式:类型&引用变量名=已定义过的变量名 引用的特点: (1)一个变量可取多个别名 (2)引用必须初始化(特别重要) (3)引用只能在初始化的时候引用一次,不能改变为再引用其他的变量 2.下面我通过代码向大家展示引用的做用和特性 (1)一般引用,类型前不用任何词来修饰,你可以这样...
阅读(60) 评论(0)

c++函数重载的实现原理

1.c++问什么引入函数重载 在c语言中,如果我们写两个函数名相同的函数,编译器会告诉我们,函数重定义的错误。我们还会遇到下面这个问题:如果我们写一个计算int类型的加法,另一个计算double类型的加法,我们必须起两个不同的函数名。而在c++中我们可以解决这两个问题。我们可以用相同的函数名,只有参数列表不同可以。 2.函数重载的条件 (1)要求重载的函数必须在同一个作用域 (2)函...
阅读(81) 评论(0)

IPC----消息队列

1.消息队列的定义 消息队列提供了⼀种从⼀个进程向另⼀个进程发送⼀个数据块的⽅法。 每个数据块都被认为是有⼀个类型,接收者进程接收的数据块可以有不同的类型值。 消息队列接收发送消息的特点:新添加的消息总是在队尾,但接收消息的进程可以读取队列中间的数据。 此外, 消息队列也降低了读写进程间的耦合强度:若接收消息的进程没有接收到消息,发送消息的进程无须等待,可以继续发送消息,消息的读写双方只需关注各...
阅读(108) 评论(0)

线程控制

1.线程的概念 main函数和信号处理函数是同⼀个进程地址空间中的多个控制流程,多线程也是如此,但是⽐信号处理函数更加灵活,信号处理函数的控制流程只是在信号递达时产⽣,在处理完信号之后就结束,⽽多线程的控制流程可以长期并存,操作系统会在各线程之间调度和切换,就像在多个进程之间调度和切换⼀样。 有些人把多线程和程序设计和多核系统联系起来,这种想法有些片面。即使程序在单核系统上,也可以做到多线程处...
阅读(104) 评论(0)

IPC----信号量

1.为什么引入信号量 Linux 系统采用多道程序设计技术,允许多个进程同时在内核中运行,但同一个系统中的多个进程之间,可能因为进程合作或资源共享,产生制约关系。制约关系分为直接相互制约关系和间接相互制约关系: (1)直接相互制约关系。 利用管道机制实现进程间通信, 当管道为空时,读进程由于无法从管道中读取数据而进入阻塞;当管道存满时,写进程由于无法向管道中写入数据而进入阻塞, 类似于这种需要进...
阅读(481) 评论(0)

单链表常见面试题

//LinkList.h #ifndef _LINKLIST_H__ #define _LINKLIST_H__#define _CRT_SECURE_NO_WARNINGS #include #include #include #include typedef int DataType; typedef struct N...
阅读(84) 评论(0)

IPC----共享内存

1.什么是共享内存:共享内存允许两个或多个进程访问给定的同一块存储区域。已知当一个进程被启动时,系统会为其创建一个 0~4G 的虚拟内存空间, 根据虚拟地址与物理地址之间的映射关系,进程可以通过操作虚拟地址,实现对物理页面的操作。 一般情况下,每个进程的虚拟地址空间会与不同的物理地址进行映射,但是当使用共享内存进行通信时,系统会将同一段物理内存映射给不同的进程。 两个进程的虚拟地址空间与共享内...
阅读(102) 评论(0)

网络基础---TCP(端口号,TCP段格式,常见定时器,握手与挥手)

1.端口号 (1).基本概念:端口包括物理端口和逻辑端口。物理端口是用于连接物理设备之间的接口,逻辑端口是逻辑上用于区分服务的端口。TCP/IP协议中的端口就是逻辑端口,通过不同的逻辑端口来区分不同的服务。一个IP地址的端口通过16bit进行编号,最多可以有65536个端口。端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535。 (2).如何对端口号进行分类 服务器端使用...
阅读(68) 评论(0)
22条 共2页1 2 下一页 尾页
    个人资料
    • 访问:2593次
    • 积分:240
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类