Chinaunix首页 | 论坛 | 博客
  • 博客访问: 910857
  • 博文数量: 299
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2493
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-21 10:07
个人简介

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-07-29 21:08:25

初学者在学习面向对象的程序设计语言时,或多或少的都些疑问,我们写的代码与最终生编译成的代码却大相径庭,我们并不知道编译器在后台做了什么工作.这些都是由于我们仅停留在语言层的原因,所谓语言层就是教会我们一些基本的语法法则,但不会告诉我们为什么这么做?今天和大家谈的一点感悟就是我在学习编程过程中的一点经.........【阅读全文】

阅读(990) | 评论(0) | 转发(0)

发布时间:2014-07-29 17:58:07

前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI.........【阅读全文】

阅读(812) | 评论(0) | 转发(0)

发布时间:2014-07-29 16:48:37

在C++中,不能声明虚构造函数,但可以声明虚析构函数。多态性是指不同的对象对同一消息有不同的行为特性。虚函数作为运行时多态性的基础,主要是针对对象的,而构造函数是在对象产生之前运行的,因此虚构造函数是没有意义的。      析构函数的功能是在该类对象消亡之前进行一些必要的清理.........【阅读全文】

阅读(790) | 评论(0) | 转发(0)

发布时间:2014-07-29 16:04:55

浅拷贝就比如像引用类型,而深拷贝就比如值类型。  浅拷贝是指源对象与拷贝对象共用一份实体,仅仅是引用的变量不同(名称不同)。对其中任何一个对象的改动都会影响另外一个对象。举个例子,一个人一开始叫张三,后来改名叫李四了,可是还是同一个人,不管是张三缺胳膊少腿还是李四缺胳膊少腿,都是这个人倒霉.........【阅读全文】

阅读(668) | 评论(0) | 转发(0)

发布时间:2014-07-29 15:43:39

1. 公有继承当类的继承方式为公有继承时,基类的公有和保护成员的访问属性在派生类中保持不变,而基类的私有成员不可访问。即基类的公有成员和保护成员被继承到派生类中仍作为派生类的公有和保护成员,派生类的其他成员可以直接访问它们;其他外部使用者只能通过派生类的对象访问继承来的公有成员;而无.........【阅读全文】

阅读(976) | 评论(0) | 转发(0)

发布时间:2014-07-29 10:17:15

1、OSI的七层协议、TCP/IP的四层协议、谢希仁老师的网络课本提到的五层协议的对比注:(1)OSI的七层协议只是理论上的协议,实际上没有用到。(2)TCP/IP的四层协议在真正在实际中用到的体系结构。(3)谢老课本中提到的五层协议只是为了更好的讲解概念而采用的折中方法。2、OSI的七层协议(1)第七.........【阅读全文】

阅读(1147) | 评论(0) | 转发(0)

发布时间:2014-07-29 09:56:24

1.1.1 摘要       在我们日常的工作中经常需要在应用程序中保持一个唯一的实例,如:IO处理,数据库操作等,由于这些对象都要占用重要的系统资源,所以我们必须限制这些实例的创建或始终使用一个公用的实例,这就是我们今天要介绍的——单例模式(Singleton)。   .........【阅读全文】

阅读(1279) | 评论(0) | 转发(0)

发布时间:2014-07-28 16:46:35

  /0是C++中字符串的结尾标志,存储在字符串的结尾,它虽然不计入串长,但要占一个字节的内存空间。在百度百科中查看/0词条,会有这样一句话:c/c++中规定字符串的结尾标志为'/0'。有人可能认为,在C语言里(C++会不同),'/0'并不是字符型,而是int型。在这里,我们姑且和百度词条作者保持一致,认为/0与'/0'是.........【阅读全文】

阅读(2022) | 评论(0) | 转发(1)

发布时间:2014-07-28 16:42:06

之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可.........【阅读全文】

阅读(933) | 评论(0) | 转发(0)

发布时间:2014-07-28 09:45:15

标准模板库就是类与函数模板的大集合。STL共有6种组件:容器,容器适配器,迭代器,算法,函数对象和函数适配器。1、容器:容器是用来存储和组织其他对象的对象。STL容器类的模板在标准头文件中定义。主要如下所示①序列容器基本的序列容器是上面图中的前三类:关于三者的优缺点主要是:.........【阅读全文】

阅读(736) | 评论(0) | 转发(0)

发布时间:2014-07-27 21:15:33

STL的容器可以分为以下几个大类: 一:序列容器, 有vector, list, deque, string.二 : 关联容器,     有set, multiset, map, mulmap, hash_set, hash_map, hash_multiset, hash_multimap三: 其他的杂项: stack, queue, valarray, bitset STL各个容器的实现: .........【阅读全文】

阅读(660) | 评论(0) | 转发(0)

发布时间:2014-07-27 21:11:24

  map映照容器的元素数据是一个键值和一个映照数据组成的,键值与映照数据之间具有一一映照的关系。        map映照容器的数据结构是采用红黑树来实现的,插入键值的元素不允许重复,比较函数只对元素的键值进行比较,元素的各项数据可通过键值检索出来。   .........【阅读全文】

阅读(607) | 评论(0) | 转发(0)

发布时间:2014-07-27 21:10:35

#include <iostream>#include <list>#include <numeric>#include <algorithm>using namespace std;//创建一个list容器的实例LISTINTtypedef list<int> LISTINT;//创建一个list容器的实例LISTCHARtypedef list<char> LISTCHAR;void main(void){    //------------------------.........【阅读全文】

阅读(1001) | 评论(0) | 转发(0)

发布时间:2014-07-27 21:09:41

vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。为了可以使用vector,必须在你的头文件中包含下面的代码:#i.........【阅读全文】

阅读(782) | 评论(0) | 转发(0)

发布时间:2014-07-27 21:07:56

C++中的容器大致可以分为两个大类:顺序容器和关联容器。顺序容器中有包含有顺序容器适配器。顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素。主要有vector、list、deque(双端队列)。顺序容器适配器:stack、queue和priority_queue。关联容器:支持通过键来高效地查找和读取元素.........【阅读全文】

阅读(813) | 评论(0) | 转发(0)

发布时间:2014-07-26 20:48:19

首先什么是小根堆:(1)它是一颗完全二叉树(2)任意一个节点均小于或等于其左右子节点的关键码(大根堆相反就是了)因此可以得知,当前树形结构的根节点就是当前整个树形结构最小的节点。。。至于说这种堆结构有什么作用:(1)以前本科的时候上数据结构课的时候就有讲过堆排序,好像还不错,.........【阅读全文】

阅读(1591) | 评论(0) | 转发(0)

发布时间:2014-07-26 16:29:29

在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即<类名>::<静态成员名>。.........【阅读全文】

阅读(931) | 评论(0) | 转发(0)

发布时间:2014-07-26 09:30:58

函数名: strrchr 功  能: 在串中查找指定字符的最后一个出现 用  法: char *strrchr(char *str, char c);举例:char fullname="./lib/lib1.so";  char *ptr;  ptr = strrchr(fullname,'/');  pri.........【阅读全文】

阅读(711) | 评论(0) | 转发(0)

发布时间:2014-07-26 08:20:56

C++中值传递、指针传递、引用传递的总结 收藏 1. 值传递:形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入,不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。void swap(int a.........【阅读全文】

阅读(1017) | 评论(0) | 转发(0)

发布时间:2014-07-25 15:49:42

小根堆如果有一个关键字的集合K={k0,k1,k2, ..., kn-1}, 把所有元素按完全二叉树的顺序存储方式存放在一个一维数组中,并且满足ki ......【阅读全文】

阅读(1573) | 评论(0) | 转发(0)

发布时间:2014-07-25 09:00:14

应邀答题,很好奇这样中规中矩的题目为啥要匿名。首先说说“适合学生参与”。参与开源项目的开发者,来自各行各业的都有,并没有哪些开源项目学生的比例明显高于其它项目的。至于 GSoC,其项目也不是单独为学生专门设计的,都只是从标准的开源项目里选出一些工作量大小适中的子项目专门让学生参与而已。如果硬要说学生和.........【阅读全文】

阅读(2132) | 评论(0) | 转发(0)

发布时间:2014-07-24 20:13:53

第一层次:普通管理员    1、特征:能理解分区的概念,知道安装linux系统和常见的数据库、桌面管理器、应用软件等,能做一些基本的配置(如网络、打印机、调制解调器等),参照手边资料依葫画瓢式的安装和配置常见服务(如NFS、HTTP、FTP、TELNET、 SSH、LDAP、NIS、邮件服务、SAMBA、打印服务等),能解决一些.........【阅读全文】

阅读(1420) | 评论(0) | 转发(0)

发布时间:2014-07-24 19:58:49

内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低。其中特权级0(Ring0)是留给操作系统代码,设备驱动程序代码使用的,它们工作于系统核心态;而特权极3(Ring3)则给普通的用户程序使用,它们工作在用户态。运行于处理器核心态的代码不受任何的限制,可.........【阅读全文】

阅读(1279) | 评论(0) | 转发(0)

发布时间:2014-07-24 19:37:55

什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4) is a new API introduced in Linux kernel 2.5.44),它几乎具备了之前所说的一切优点,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll的.........【阅读全文】

阅读(1514) | 评论(0) | 转发(0)

发布时间:2014-07-24 17:14:46

   作为一个经验丰富的C/C++程序员, 肯定亲手写过各种功能的代码, 比如封装过数据库访问的类, 封装过网络通信的类,封装过日志操作的类, 封装过文件访问的类, 封装过UI界面库等, 也在实际的项目中应用过, 但是回过头仔细想想,其实以前自己写过的这些代码,只能是在特定的项目或者特定的环境中使用, 对.........【阅读全文】

阅读(1191) | 评论(0) | 转发(1)
给主人留下些什么吧!~~

tianyashuibin2014-12-08 11:22

Oscarzhao:c++11 中貌似可以

嗯,是的,在c++11中可以

下面是在gcc的编译结果:
test_struct.cc:8:11: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 [enabled by default]
   int a = 1;
           ^

回复  |  举报

Oscarzhao2014-11-26 20:12

tianyashuibin:除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

c++11 中貌似可以

回复  |  举报

tianyashuibin2014-10-23 21:57

除了静态数据成员外,数据成员不能在类体内显式的初始化

举个最简单例子
struct a

  int a=1;
  int b=2;
};
这也不能通过啊!
原因很简单,因为struct a此时只是在说明有这么个类型,而并没有定义一个具体的变量和分配内存空间

回复  |  举报

tianyashuibin2014-10-23 21:39

1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员
2.进入构造函数后在构造函数中执行一般计算
  1.类里面的任何成员变量在定义时是不能初始化的。
  2.一般的数据成员可以在构造函数中初始化。
  3.const数据成员必须在构造函数的初始化列表中初始化。
  4.static要在类的定义外面初始化。   
  5.数组成员是不能在初始化列表里初始化的。
  6.不能给数组指定明显的初始化。  
这6条一起,说明了一个问题:C++里面是不能定义常量数组的!因为3和5的矛盾。

回复  |  举报

tianyashuibin2014-10-23 21:32

记住静态成员这样初始化:
C/C++ code

class A
{
public:
   static const int a[3];
};
 
const int A::a[3] = {1,2,3};

回复  |  举报
留言热议
请登录后留言。

登录 注册