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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间:2014-03-27 18:10:23

问题一:int *p1 = new int[10]; int *p2 = new int[10](); 有啥区别?答:我理解 int *p2 = new int[10]();申请了空间而且进行了初始化int *p1 = new int[10];只申请空间没有进行初始化原因:对于些结构体我们看()往往表示构造函数int基本类型算初始化吧理由: 测试输出两种值 会发现p1值未知而p2清.........【阅读全文】

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

发布时间:2014-12-29 11:12:35

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

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

发布时间:2014-12-07 22:54:19

C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中.所以,以下代码:#include <iostream>using namespace std;int main(){const int a = 1;const int b = 2;int array[ a + b ] = {0};for (int i = 0; i < sizeof array / sizeo.........【阅读全文】

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

发布时间:2014-11-18 15:08:48

由于常常要和汉字处理打交道,因此,我常常受到汉字编码问题的困扰。在不断的打击与坚持中,也积累了一点汉字编码方面的经验,想和大家一起分享。一、汉字编码的种类汉字编码中现在主要用到的有三类,包括GBK,GB2312和Big5。1、GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆。新加坡等地也使用.........【阅读全文】

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

发布时间:2014-11-10 18:41:01

本文演示了C语言中预定义符 __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__ 的使用。这几个预定义符的名称就没必要再介绍了,顾名思义嘛。点击(此处)折叠或打开// 演示 __FILE__, __LINE__, __FUNCTION__, __DATE__, __TIME__ 的使用.........【阅读全文】

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

发布时间:2014-11-09 22:46:44

 Roger (roger2yi@gmail.com) 一个中等规模的解决方案通常都会包含多个项目,其中一些项目产出静态库,一些产出动态库,一些用于单元测试,还有的产出最终的应用程序执行档。除此以外,根据项目的需求,还会使用一些第三方的库。 所以为解决方案设置一个合理的目录结构,不但可以.........【阅读全文】

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

发布时间:2014-11-09 18:07:00

  应用程序使用DLL可以采用两种方式:一种是隐式链接,另一种是显式链接。在使用DLL之前首先要知道DLL中函数的结构信息。Visual C++6.0在VC\bin目录下提供了一个名为Dumpbin.exe的小程序,用它可以查看DLL文件中的函数结构。另外,Windows系统将遵循下面的搜索顺序来定位DLL: 1.包含EXE文件的目录,2.进程的当前工作.........【阅读全文】

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

发布时间:2014-11-09 17:51:25

1. 添加编译所需要(依赖)的 lib 文件[解决方案资源管理器]“项目->属性->配置属性->连接器->输入->附加依赖项”里填写“winsock.lib”,多个 lib 以空格隔开。 (等同于“#pragma comment(lib, "winsock.lib") ”语句)2. 添加库(Libs)文件目录方法 1:[解决方.........【阅读全文】

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

发布时间:2014-11-09 17:44:16

1.dll的优点代码复用是提高软件开发效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架,ATL、MFC等,它们都以源代码的形式发布。由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒.........【阅读全文】

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

发布时间:2014-11-05 09:53:16

const修饰普通变量和指针const修饰变量,一般有两种写法:const TYPE value;TYPE const value;这两种写法在本质上是一样的。它的含义是:const修饰的类型为TYPE的变量value是不可变的。对于一个非指针的类型TYPE,无论怎么写,都是一个含义,即value值不可变。 例如:const int nValue; &.........【阅读全文】

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

发布时间:2014-11-04 22:30:06

C 风格(C-style)强制转型如下:(T) expression // cast expression to be of type T函数风格(Function-style)强制转型使用这样的语法:T(expression) // cast expression to be of type T这两种形式之间没有本质上.........【阅读全文】

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

发布时间:2014-11-04 13:23:42

按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p ); // 用C风格的字符串p作为初始化值//…}String s1 = “hello”; //OK 隐式转换,等价于String s1 = String(“hello.........【阅读全文】

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

发布时间:2014-10-30 15:29:10

weak_ptr是为配合shared_ptr而引入的一种智能指针,它更像是shared_ptr的一个助手,而不是智能指针,因为它不具有普通指针的行为,没有重载operator*和operator->,它的最大作用在于协助shared_ptr,像旁观者那样观测资源的使用情况。 类摘要:[cpp] view plaincopyt.........【阅读全文】

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

发布时间:2014-10-29 21:53:45

Tortoise SVN使用方法,简易图解        刚到公司实习,为了版本控制,我公司使用SVN控制版本,在此记下SVN使用方法,仅供参考!        废话少说,上图!-------------------------------------------------------我是分割线-------------------.........【阅读全文】

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

发布时间:2014-10-29 20:32:07

在类中,有两个与众不同的成员函数,那就是构造函数和析构函数。当构造函数与析构函数遭遇继承和多态,它们的运行状况又会出现什么变化呢?多态性是在父类或各子类中执行最合适成员函数。一般来说,只会选择父类或子类中的某一个成员函数来执行。这可给析构函数带来了麻烦!如果有的资源是父类的构造函数申请的,有的资源.........【阅读全文】

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

发布时间:2014-10-24 21:44:58

之前都是参考别人的代码,现如今自己动手来写一个个人版本的线程池,线程池的实现本身并不复杂,无非就是创建一些线程然后让这些线程处于条件等待状态(可以用条件变量,也可以用信号量来实现)。这是最基本的原理,原理的理解很简单,但重要的是实现的细节问题。线程池的实现:包含内容:1、线程数量N;2、线程的工.........【阅读全文】

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

发布时间:2014-10-23 21:45:25

在C++中,当我们没有为一个类定义构造函数时,编译器会自动生成一个默认的构造函数,这个时候可能生成的类对象中的数据成员跟我们所期待的值会不一样,接下来讨论一下当使用默认构造函数生成对象时类中各数据成员的初始化情况。这主要取决于以下三点:(1)      数据成员本身的类型;.........【阅读全文】

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

发布时间:2014-10-23 21:29:31

C++为类中提供类成员的初始化列表。类对象的构造顺序是这样的:1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员2.进入构造函数后在构造函数中执行一般计算  1.类里面的任何成员变量在定义时是不能初始化的。  2.一般的数据成员可以在构造函数中初始化。  3.const数据成员必须在构.........【阅读全文】

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

发布时间:2014-10-22 21:00:27

1、  一些头文件的作用:<assert.h>:ANSI C。提供断言,assert(表达式)<glib.h>:GCC。GTK,GNOME的基础库,提供很多有用的函数,如有数据结构操作函数。使用glib只需要包含<glib.h><dirent.h>:GCC。文件夹操作函数。struct dirent,struct DIR,opendir(),closedir(),readdir(),readdir64()等<ctype.h>:ANSI C.........【阅读全文】

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

发布时间:2014-10-20 21:36:28

Segmentation fault is a specific kind of error caused by accessing memory that “does not belong to you.” It’s a helper mechanism that keeps you from corrupting the memory and introducing hard-to-debug memory bugs. Whenever you get a segfault you know you are doing something wrong with memory – a.........【阅读全文】

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

发布时间:2014-09-23 00:47:16

在面向对象编程(Object-Oriented Programming, OOP)中,多态机制无疑是其最具特色的功能,甚至可以说,不运用多态的编程不能称之为OOP。这也是为什么有人说,使用面向对象语言的编程和面向对象的编程是两码事。多态并没有一个严格的定义,维基百科上给它下的定义比较宽松:Subtype polymorphism, almost uni.........【阅读全文】

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

发布时间:2014-09-23 00:05:07

/*问题描述:从一个字符串中搜索出指定类型的最长的字符串*/#include <iostream>#include <vector>#include <string>#include <algorithm>#include <ctype.h>using namespace std;struct Snode {    int index;   &n.........【阅读全文】

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

发布时间:2014-09-22 23:36:37

1、 C++ 定义了哪些类型转换操作符?分别有什么作用? ① 定义了四个操作符:static_cast,const_cast,dynamic_cast和reinterpret_cast。 ② static_cast:可以被用于强制类型转换(例如,non-const对象转换为const对象,int转换为double,等等),它还可以用于很多这样.........【阅读全文】

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

发布时间:2014-09-22 17:36:55

1.        结构化程序设计为了提高程序的可读性、可重用性等,逐渐出现了将程序开发中经常用到的相同的功能,比如数学函数运算、字符串操作等,.........【阅读全文】

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

发布时间:2014-09-11 12:01:29

C中的可变参数研究一. 何谓可变参数int printf( const char* format, ...);这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用”…”表示). 而我们又可以用各种方式来调用printf,如:printf( "%d ",value);printf( "%s ",str);printf( "the number is %d ,string is:%s.........【阅读全文】

阅读(1477) | 评论(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};

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

登录 注册