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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-07-31 17:44:55

我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种。静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。本文主要通过举例来说明在Linux中如何创建静.........【阅读全文】

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

发布时间:2014-07-31 17:07:43

在空白的文本编辑器里打开一个崭新的文本,没有一行代码,出现在眼前的是一个充满了无限可能和希望的项目。可是,当数千行的代码写完之后,整个项目因为bug的出现而被压垮了,更别说添加什么新功能了...这也许是对程序员的最大打击,在饱满的热情上浇了一盆冷水。其实,最好的软件程序员当然知道怎样去发现并修复这些bug.........【阅读全文】

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

发布时间:2014-07-31 15:39:17

[-]概念理解Linux下的五种IO模型阻塞IO模型非阻塞IO模型IO复用模型信号驱动IO异步IO模型个IO模型的比较selectpollepoll简介socket阻塞与非阻塞,同步与异步作者:huangguisu.........【阅读全文】

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

发布时间:2014-07-31 11:06:32

包含文件:#ifndef __TIME_T#define __TIME_T     /* 避免重复定义 time_t */typedef long     time_t;    /* 时间值time_t 为长整型的别名*/#endif 既然time_t实际上是长整型,到未来的某一天,从一.........【阅读全文】

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

发布时间:2014-07-30 21:44:42

变量定义与声明的区别我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:     变量的声明有两种情况:     (1) 一种是需要建立存储空间的(定义、.........【阅读全文】

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

发布时间:2014-07-30 21:40:42

在写 头文件的时间 经常会有一些 class QFile 等这类 看似 是声明的东西..例如下面#ifndef WINDOW_H#define WINDOW_HQT_BEGIN_NAMESPACEclass QTcpServer;class QTcpSocket;class QProgressBar;class QLabel;class QDialogButtonBox;class QFile;QT_END_NAMESPACE//code endclass QAction;class Q.........【阅读全文】

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

发布时间:2014-07-30 11:32:49

兔子繁殖问题与斐波那契  裴波那契(Fibonacci leonardo,约1170-1250)是意大利著名数学家. 他最重要的研究成果是在不定分析和数论方面,他的“裴波那契数列”成为世人们热衷研究的问题.  保存至今的裴波那契著作有5部,其中影响最大的是1202年在意大利出版的《算盘书》,《算盘书》中许多有趣的问题.........【阅读全文】

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

发布时间:2014-07-30 09:45:35

转载请注明出处,声明如下:作者:peizhongyou原文地址:http://hi.baidu.com/pub/show/modifytext?qbid=0f96a73fe72477ad623aff67前几天参加一个编程竞赛,涉及到部分位运算的知识,准备不足挂了。事后在网上搜了一下位运算的介绍看到《位运算之美》这篇博客,其中提到了一个题目“不许用%和/来实现求任意.........【阅读全文】

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

发布时间:2014-07-30 00:02:14

......【阅读全文】

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

发布时间:2014-07-29 23:58:19

Linux_c 编程——判断编译器是大端还是小端,有需要的朋友可以参考下。Linux_c 编程——判断编译器是大端还是小端1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位.........【阅读全文】

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

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

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

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

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

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

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

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

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

阅读(789) | 评论(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)。   .........【阅读全文】

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

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

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

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

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

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

阅读(932) | 评论(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){    //------------------------.........【阅读全文】

阅读(1000) | 评论(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。关联容器:支持通过键来高效地查找和读取元素.........【阅读全文】

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

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};

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

登录 注册