后PC时代 Firefox已死IE永生?

2011-05-11 15:36 by ufouser, 146 次阅读, 没有评论

继续阅读

《我的第一本C++书》,你值得拥有

2011-05-05 16:17 by 陈良乔, 617 次阅读, 一条评论

作为一本入门级的C++书,本书在创作的时候坚持这样三个原则:

  • 内容翔实,坚持以实用为主,介绍了C++中最常用的必须掌握的绝大部分知识,对于一些很少用到的语法知识,则较少涉及。在讲解的时候,也以实际的应用场景为主,避免孔乙己式的深究C++的语法细节。
  • 语言生动有趣,避免以往教科书式的呆板面孔。全书以一个C++世界为主线,形象生动地介绍了C++世界中的各种食物。全书中丰富的比喻,可以让读者对比较抽象难懂的C++知识有一个形象的劣迹,更利于掌握知识。
  • 坚持理论实践相结合。在讲解知识的同时,结合作者自己多年的实践经验,提醒读者这些C++知识应该如何应用,在应用的过程中需要注意些什么,同时有大量的实例加以示范,这样可以避免读者掌握了C++的语法知识,却没法动手写程序的纸上谈兵式的学习。特别是最后一章收集整理的各大公司的鄙视题目与分析,对读者有很大的实用价值。

如果你是一个C++新手,正在寻找一[……]

继续阅读

C++0x新特性:委托构造函数(delegate constructor)

2011-04-23 13:41 by 陈良乔, 247 次阅读, 没有评论

C++0x带来的委托构造函数(delegate constructor),说白了,其实就是在某一个构造函数中调用另外一个构造函数,实际上,类似的特性在Java中早已经存在了,好像就是在构造函数之后跟上Base()来实现的。

委托构造函数确实能够带来一些便利,常常,我们需要在两个相类似的构造函数中实现相同的功能,在以往,我们也许会通过将这些相同的功能集中到一个init()中来实现,两个构造函数调用同一个函数。现在C++0x有了委托构造函数,我们可以将这些相同的功能在某个基础的构造函数中实现,另外一个构造函数调用这个基础构造函数就可以了。一个简单的例子是:

#include <iostream>
using namespace std;
// 正数类
class PositiveNumber
{
public:
// 带参数的构造函数,附带了对参数进行检查的功能 
PositiveNu[……]

继续阅读

C++0x新特性:constexpr常量表达式

2011-04-22 13:41 by 陈良乔, 249 次阅读, 没有评论

面对这个新特性,我的第一个问题就是,C++中已经有了const,为什么还需要一个consteppr常量表达式?
经过一段搜索研究,才发现const在表达一些常量的时候,有一些缺陷,考虑如下的代码:

const int getmax()
{
    return 3;
}
void f(int x)
{
     switch (x) {
     case getmax():         /* … */ break;
     default:          /* … */ break;
     }
}

这个程序在g++上编译会产生这样的错误,
Noname1.cpp:10:14: error: a function call cannot appear in a constant-expression
也就是说switch分支条件不支持函数[……]

继续阅读

C++0x新特性:关于auto关键字的使用

 10:45 by 陈良乔, 139 次阅读, 没有评论

这几天,和Stroustrup先生讨论了C++0x中的新关键字auto的使用。因为C++是强类型的程序设计语言,程序员在定义变量的时候,必须指定变量的数据类型,但是如果使用auto作为变量的数据类型,却可以由编译器根据变量的初始数值自动推断变量的数据类型,这无疑给程序员带来了便利,再也不用费脑筋去想一些比较复杂的变量的类型到底是什么。

但是,凡事都是有利有弊,auto也带来另外一个小问题:当我们在使用auto类型的变量的时候,并不清楚他的真正数据类型是什么,这可能导致对这个变量的一些误用。比如,一个auto变量的数据类型被推断为int,但是我们在使用的时候并不清楚他的数据类型是int,可能会导致他的值超过它的取值范围而产生溢出错误。所以,我的建议是,auto虽然好用,但是,我们还是尽量做到,能不用就不用,尽量少用。现在我发现的auto有用的一个地方是,作为容器的for循环迭代变量,可以省去[……]

继续阅读

C++0x新特性:具有类域的枚举类(enum class)

2011-04-21 11:54 by 陈良乔, 106 次阅读, 没有评论

在C++0x中,提供了大家期待已久的具有类域控制的枚举类,这至少是我期待已久的。在以往使用枚举的时候,因为枚举值没有类域的控制,两个不同枚举中的相同枚举名往往会产生名字冲突,另外一点是,因为枚举值之前不需要类的名字,往往在阅读代码的时候,看到一个枚举值,却不知道他是哪一个枚举类的,表示什么意义。

 
// 枚举类
enum class TrafficLight : char
{
 Red,
 Green,
 Yellow
};

int main(int argc, char *argv[])
{
 // 可以定义一个枚举类的变量,且只能使用枚举值对其进行赋值
 TrafficLight light = TrafficLight::Red;

// error: cannot convert 'int' to 
// 'TrafficLight' in in[......]

继续阅读

不靠谱:Office15欲加入即时消息功能

2011-04-20 14:06 by 陈良乔, 27 次阅读, 没有评论

最近,在微软的职位招聘网站上张贴的一则招聘广告中,描述了Office 15的美妙的应用场景,吊足了我们对于Office 15的胃口。这则广告可以帮助我们更进一步地了解Office 15的更多细节,尽管我们之前已经通过其他的广告、在线的介绍、或者是其他泄露出来的屏幕截图中对Office 15有所了解。微软将如何让Office 15集成到Windows 8当中这仍然是一个谜,但是,当你读过这篇文章之后,你就不会为Windows在集成方面的大胆而创新的想法而感到吃惊。

  这一则广告是这样来描述Office 15的美妙场景的:

  微软的Lync Server团队正在为企业和Office 365构建下一代的统一通信和协作解决方案。如果你希望成为真正的行业领袖,希望从任何设备、任何时间和任何地点都能够灵活自由地参与到某一项工作的协作当中,那么,Lync Server团队的工作可以让你的梦想成为现实[……]

继续阅读

C++0x新特性:用auto和decltype借力编译器推断数据类型

2011-04-19 11:54 by 陈良乔, 155 次阅读, 没有评论

我们都知道,C++是强类型的编程语言,我们在声明一个变量的时候,必须指明这个变量的数据类型。但是,由程序员来指明某个变量的数据类型,在某些情况下,并不是一件容易的事情。例如:我们要定义一个变量来保存两个函数的返回值的乘积运算结果,这个时候人为地指定这个变量的类型就有一定的难度。在这种情况下,就可以请auto和decltype来帮忙。例如:

#include
using namespace std;
class Point
{
public:
 Point(int x, int y)
  :_x(x),_y(y) {}
 //
 Point operator * (int z)
 { 
  _x *= z;
  _y *= z;
  return *this;
 }
 [……]

继续阅读

C++0x新特性:控制某个类使用默认函数(default)或者禁用某个函数(delete)

2011-04-18 15:26 by 陈良乔, 139 次阅读, 没有评论

在C++0x中,新添加了两个关键字:default和delete,可以用于控制某个类使用默认函数(default)或者禁用某个函数(delete),按照Stroustrup先生在默认或者禁用函数—控制默认函数 中的说法,使用default关键字告诉编译器使用某个默认函数的默认实现,比如默认的拷贝构造函数,赋值操作符“=”等等,显然是多此一举,但是却可以给代码的阅读者一个提示:hi,我使用的是默认函数的默认实现哦。

关于delete关键字,作用更大一些,他可以禁用我们不想要的编译器提供给我们的默认实现的函数,例如我们的类当中有指针成员变量,不想使用默认的以内存拷贝形式实现的拷贝复制函数,以防止默认拷贝构造函数错误地复制了指针成员变量,就可以用delete关键字禁用这个默认拷贝构造函数,另外一个方面,在函数调用时,为了防止参数类型的转换,这样有时候会带来今年[……]

继续阅读

来自Microsoft Press的几本免费电子书

2011-04-11 11:36 by 陈良乔, 31 次阅读, 没有评论

Micorsoft Press提供了几本免费的电子书,有兴趣的朋友可以从这里下载:

 

693913_eBook.indd
Free ebook: Moving to Microsoft Visual Studio 2010 (10 chapters by by Patrice Pelland, Pascal Paré, and Ken Haines)

9780735693883f

Free ebook: Introducing Microsoft SQL Server 2008 R2 (10 chapters by Ross Mistry and Stacia Misner)

9780735693821f

Free ebook: Understanding Microsoft Virtualization Solutions (Second Edition) (6 chapters by Mitch Tulloch)

9780735693616f

Fre[……]

继续阅读