存档

2011年9月 的存档

漫话C++0x(三)

2011年9月24日 没有评论

本文是《漫话C++0x》系列的第三篇,接前面的内容,继续为大家介绍一些C++0x中增加的比较好玩的特性。我们知道变量的初始化在C++中是一个比较重要的话题,好的编程习惯建议大家在声明变量的时候最好初始化,这样可以避免一些不必要的问题。另外,在C++98中,变量的初始化(initialization)和赋值(assignment)是两个比较重要的概念,这里大家可以回顾一下,比如常量只能初始化,不能赋值。

今天要讲的主要内容就是C++0x中新增加的统一初始化的语法,通过与C++98中的对比,我们来加深对C++0x的理解。下面我们来看一些C++98中初始化的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/// 各种形式的初始化
const int x(5);           ///< 直接初始化
const int y = 5;          ///< copy构造初始化
int arr[] = {1, 2, 3};    ///< 大括号初始化
struct Point{int x, y;};
const Point p = {1, 2};   ///< 大括号初始化
class PointX
{
public:
    PointX(int x, int y);
private:
    int x, y;
};
const PointX px(1, 2);    ///< 构造函数初始化
std::vector< int> vec(arr, arr+3); ///< 从别的容器初始化

阅读全文…

漫话C++0x(二)

2011年9月17日 9 条评论

本文是《漫话C++0x》系列的第二篇,从本篇开始,我将正式为大家介绍C++0x新增的特性,帮助大家认识C++0x。由于C++0x增加的特性还是挺多的,限于篇幅原因,每一篇只能介绍大概4、5个特性,所以,要把所有的新特性介绍完,需要好几个篇幅。下面言归正传,开始今天要介绍的内容,首先从大家最常用到的基本特性讲起。

  • 1. auto用来声明变量
  • 大家先看看下面的代码,一个我们比较熟悉的C++98中遍历map的例子:

    1
    2
    3
    4
    5
    
    std::map< std::string, std::vector<int> > mp;
    for (std::map< std::string, std::vector<int> >::iterator i = mp.begin(); i != mp.end(); ++i)
    {
        /// traverse the map
    }

    阅读全文…

    分类: 程序人生 标签: , ,

    漫话C++0x(一)

    2011年9月10日 2 条评论

    关于C++0x,很多朋友可能会感到比较陌生,其实简单来讲,它就是C++语言的一个升级版本,至于为什么叫C++0x,且听我一一说来。在介绍C++0x的由来之前,有必要介绍一下C++语言的发展历史,从一开始到现在,C++大概经历了以下几个比较重要的阶段:

  • 1998: ISO官方发布C++标准,俗称C++98,这是第一个C++的官方正式版本
  • 2003: TC1(Technical Corrigendum 1)发布,俗称C++03, 这个版本可以当成是C++98的一个bugfix版本
  • 2005:TR1(Technical Report 1)发布,TR1是一个新增加的库,增加了大约14种新的组件到C++标准中
  • 2008:新C++标准(C++0x)草案发布,这个主要是以TR1的基础上进行了扩充
  • 2011:C++0x标准通过
  • 阅读全文…

    分类: 程序人生 标签: ,