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

Linux后台服务器编程。

文章分类

全部博文(299)

文章存档

2015年(2)

2014年(297)

发布时间: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 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-24 15:15:30

C++中真正的临时对象是看不见的,它们不出现在你的源代码中,临时对象的产生在如下几个时刻: 1.       用构造函数作为隐式类型转换函数时,会创建临时对象。例:        class Integer    &nb.........【阅读全文】

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

发布时间:2014-07-18 17:18:20

up vote8down votefavorite3I found this symbols in a function declaration several times, but i don't know what they mean, if it is something stupid I apologize for the question.lik.........【阅读全文】

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

发布时间:2014-07-10 15:32:41

在C语言编程中,当我们声明一个字符串数组的时候,常常需要把它初始化为空串。总结起来有以下三种方式:(1) char str[10]="";(2) char str[10]={'\0'};(3) char str[10]; str[0]='\0';第(1)(2)种方式是将str数组的所有元素都初始化为'\0',而第(3)种方式是只将str数组的第一个元素初始化为'\0'。如果数组.........【阅读全文】

阅读(1289) | 评论(2) | 转发(0)

发布时间:2014-06-04 10:08:53

1,malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。2,对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内.........【阅读全文】

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

发布时间:2014-05-22 19:55:09

new和delete运算符用于动态分配和撤销内存的运算符new用法:          1.     开辟单变量地址空间               1)new int;  //.........【阅读全文】

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

发布时间:2014-05-22 19:53:29

c++编译常会出现free(): invalid next size(fast)或者是free(): invalid next size(normal)的问题,这大多数是内存泄漏的问题。经常出现的情况是动态数组赋值越界,导致最后在进行free时候,出现内存泄漏。解决方法,只能首先定位,然后一步一步自查,发现对数组的操作,然后慢慢带入,考虑极端情况(数组下标过大,或者.........【阅读全文】

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

发布时间:2014-05-06 17:53:58

最近在看C++,学到了标准库这一章,看到cin的时候,我们经常看到很多的代码中会有这么一段while(cin>>x){ ......}。这里我们最关注的问题是while括号里面cin>>x他每次输入的时候返回的是什么值呢。所以我们也就会问cin的返回值是什么。我也看到很多像我这样的新手问这样的问题,下面说下我个人的见解,如有不当之处,还请指.........【阅读全文】

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

发布时间:2014-05-06 15:45:57

  C++强大的功能来源于其丰富的类库及库函数资源。C++标准库的内容总共在50个标准头文件中定义。在C++开发中,要尽可能地利用标准库完成。这样做的直接好处包括:(1)成本:已经作为标准提供,何苦再花费时间、人力重新开发呢;(2)质量:标准库的都是经过严格测试的,正确性有保证;(3)效率:关于人的效率已经体现.........【阅读全文】

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

发布时间:2014-04-08 09:34:29

C++ provides the following classes to perform output and input of characters to/from files: ofstream: Stream class to write on filesifstream: Stream class to read from filesfstream: Stream class to both read and write from/to files.These classes are deri.........【阅读全文】

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

发布时间:2014-04-06 20:09:05

const用法详解,如何修饰变量,返回值以及成员函数const关键字是用来修饰一个变量使其成为常量(constant)的。常量只能在定义时进行初始化,而此后对这个变量的任何改变都将是非法的。const关键字在就是为了保证了它修饰的对象不被修改。对于指针来说,const关键字同样可以保证它修饰的对象不被修改.........【阅读全文】

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

发布时间:2014-03-29 22:02:02

最近学习算法,看CSDN博客:结构之法 中的 微软100题。由于编程动手少,知道怎么做,但是就是写不出代码来,所以把答案抄写几遍,最后记住了答案,可以直接写出代码来。那么是不是多记忆一些代码然后就可以提高自己的编程能力呢?我想这就如同背记作文,然后背多了就能写出文章来,但是这样的效率高吗?恐怕不会很高,写代.........【阅读全文】

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

发布时间:2014-03-25 20:34:34

        extern "C" 包含双重含义,从字面上即可得到:首先,被它修饰的目标是“extern”的;其次,被它修饰的目标是“C”的。让我们来详细解读这两重含义。含义(1) 被extern限定的函数或变量是extern类型的:a.extern修饰变量的声明。举例来说,如果文件a.c需要引.........【阅读全文】

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

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

登录 注册