随笔分类 -  c++

摘要:我们先来看一段代码: 运行结果为: 第一个基类子对象A的起始地址是与派生类对象C是重合的。我们来看一张图片: 上图演示了this指针是如何调整的。在派生类的对象中,基类是作为派生类的子对象存在的,称为基类子对象,当派生类只继承于一个基类时,基类子对象的起始地址是与派生类对象相同的,而当派生类同时继承 阅读全文
posted @ 2019-04-07 18:27 evilsnake 阅读(487) 评论(0) 推荐(0) 编辑
摘要:一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。 首先,类的大小是什么?确切的说,类只是一个类型的定义,它是没有大小可言的,用sizeof运算符对一个类型名操作,得到的是具有该类型实体的大小 可以看到一个空类对象的大小1. 一个空类对象的大小是1,为什么不是0? 初学者肯定 阅读全文
posted @ 2019-04-02 20:28 evilsnake 阅读(4178) 评论(0) 推荐(2) 编辑
摘要:这篇文章主要介绍拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数,什么情况下调用赋值运算符。 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义,但是也没有显示的删除),编译器会自动隐式生成一个拷贝构造函数和赋值运算符,但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符, 阅读全文
posted @ 2019-03-29 17:04 evilsnake 阅读(5916) 评论(0) 推荐(6) 编辑
摘要:有时候我们希望定义这样一种变量,它的值不能被改变。例如,用一个变量来表示缓冲区的大小,使用变量的好处是当我们觉得缓冲区大小不再合适时,很容易对其进行调整。另一方面,也应随时警惕防止程序一不小心改变了这个值,为了满足这一要求,可以用关键字const对变量的类型加以限定; const int buffS 阅读全文
posted @ 2019-03-19 17:48 evilsnake 阅读(289) 评论(0) 推荐(1) 编辑
摘要:复合类型(compound type)是指基于其他类型定义的类型,C++语言有几种复合类型,这里只介绍两种:引用和指针 一:引用 引用(reference)为对象起了另外一个名字,引用类型引用另外一种类型,通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。 int ival = 102 阅读全文
posted @ 2019-02-28 12:44 evilsnake 阅读(748) 评论(0) 推荐(0) 编辑
摘要:1:有头节点、单向、不循环链表 对于这种有头节点的单向不循环链表插入数据如下图: 1)头部插入 2)尾部插入 代码如下 : 1 #include "stdafx.h" 2 #include<iostream> 3 4 using namespace std; 5 6 typedef int DATA 阅读全文
posted @ 2017-03-23 22:42 evilsnake 阅读(512) 评论(0) 推荐(0) 编辑
摘要:1:关联容器和顺序容器 c++中有两种类型的容器:顺序容器和关联容器,顺序容器主要有:vector、list、deque等。其中vector表示一段连续的内存地址,基于数组的实现,list表示非连续的内存,基于链表实现。deque与vector类似,但是对于首元素提供删除和插入的双向支持。关联容器主 阅读全文
posted @ 2017-03-16 14:02 evilsnake 阅读(65867) 评论(1) 推荐(3) 编辑
摘要:1:怎么获取Markup.cpp 和 Markup.h 首先到http://www.firstobject.com/dn_markup.htm链接下,下载Release 11.5 zip (579k)C++ source code for Linux, Mac, Windows,解压后里面是一个Te 阅读全文
posted @ 2017-03-15 11:52 evilsnake 阅读(4303) 评论(0) 推荐(1) 编辑
摘要:namespace:命名空间或者叫名字空间,传统的c++只有一个全局的namespace,但是由于现在的程序规模越来越大,程序的分工越来越细,全局作用域就变得越来越拥挤,每个人都可能使用相同的名字来实现不同的库,于是程序员在合并程序的时候就可能出现名字的冲突。namespace引入了复杂性,解决了这 阅读全文
posted @ 2017-03-15 10:35 evilsnake 阅读(932) 评论(0) 推荐(0) 编辑
摘要:1:virtual关键字主要有什么作用 c++中的函数调用默认不适用动态绑定,要触发动态绑定,必须满足两个条件:第一指定为虚函数; 第二通过基类类型的引用或指针调用。 2:哪些情况下可以使用virtual关键字呢 virtual可用来定义类函数和应用到虚继承中 注意:有元函数、构造函数、static 阅读全文
posted @ 2017-03-14 19:01 evilsnake 阅读(3498) 评论(0) 推荐(2) 编辑
摘要:一:什么是类模板 一个类模板允许用户为类定义一种模式,使得类中的某些数据成员、默认成员函数的参数、某些成员函数的返回值,能够取任意类型(包括系统预定义的和用户自定义的) 如果一个类中数据成员的数据类型不能确定、或者是某个成员函数的参数或返回值的类型不能确定,就必须将此类声明为模板,它的存在不是代表一 阅读全文
posted @ 2017-03-14 17:16 evilsnake 阅读(2329) 评论(0) 推荐(1) 编辑
摘要:1:简单工厂模式 简单工厂模式是属于创建型模式,又叫做静态工厂方法(static Factory Method)模式,简单工厂模式是由一个工厂对象决定创建出来哪一种产品类的实例. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一类产品类(这些产品类继承自一个父类或接口)的实例。打 阅读全文
posted @ 2017-03-13 19:10 evilsnake 阅读(21266) 评论(4) 推荐(3) 编辑
摘要:C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一 阅读全文
posted @ 2017-03-13 15:15 evilsnake 阅读(697) 评论(0) 推荐(0) 编辑
摘要:进程间通信简单的说有三个问题,第一个问题是:一个进程如何把信息传递给另一个,第二个问题是:要确保两个或者更多的进程在互动中不会出现交叉(即是进程互斥问题),第三个问题是:进程间同步问题、 四种进程或者线程同步互斥的控制方法 1):临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制 阅读全文
posted @ 2017-03-13 11:04 evilsnake 阅读(2627) 评论(0) 推荐(0) 编辑
摘要:我们知道管道包括三种: 1):普通管道PIPE,通常有很多限制,一是半双工,只能单向传输,二是只能在父子进程间使用 2):流管道:这种能双向传输,但是也是只能父子进程间使用。 3):命名管道,去除了以上的第二种限制,可以在许多不相关的进程间进行通讯。也是半双工的通信方式。 但是通常我们把管道分为匿名 阅读全文
posted @ 2017-03-09 12:10 evilsnake 阅读(11121) 评论(0) 推荐(0) 编辑
摘要:最开始学习c语言的时候,老是对指针数组和数组指针弄混淆,但是从英文解释来看就比较容易了。 指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针。 数组指针: a pointer to an array,即指向数组的指针。 比如: int *a[4] 指针数组 表 阅读全文
posted @ 2017-03-07 15:05 evilsnake 阅读(309) 评论(0) 推荐(0) 编辑
摘要:1:网络中进程之间如何通信 为了实现进程之间通信,首要解决的问题是如何唯一标识一个进程,在本地可以通过进程PID来唯一标识一个进程,但是在网络中则是行不通的,其实TCP/IP协议族已经帮我们解决了这个问题,网络层的"ip 地址"可以唯一标识网络中的主机,而"传输层的 协议+端口"可以唯一标识主机中的 阅读全文
posted @ 2017-03-03 16:33 evilsnake 阅读(8297) 评论(0) 推荐(3) 编辑
摘要:封装 所谓封装就是将某些东西包装盒隐藏起来,让外界无法直接使用,只能通过某些特定的方式才能访问。封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部接口以及特定的访问权限来使用类的成员。 例如,下例中时一个动物类,我们把数据和功能封装起来。 我们可以通过封装使一部分成员充当 阅读全文
posted @ 2017-03-02 16:10 evilsnake 阅读(14984) 评论(0) 推荐(1) 编辑
摘要:(1):当在多条继承路径上有一个公共的基类,在这些路径的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类、 class CBase { }; class ChildA1:virtual public CBase{ }; clas 阅读全文
posted @ 2017-03-01 15:33 evilsnake 阅读(6524) 评论(0) 推荐(2) 编辑
摘要:在C++的Template中很多地方都用到了typename与class这两个关键字,有时候这两者可以替换,那么这两个关键字是否完全一样呢? 事实上class用于定义类,在模板引入c++后,最初定义模板的方法为:template<class T>,这里class关键字表明T是一个类型,后来为了避免c 阅读全文
posted @ 2016-11-18 11:04 evilsnake 阅读(117556) 评论(4) 推荐(13) 编辑