1. C++-style Type Conversion

    优先使用 C++ 风格类型转换

    大多数程序员都认为 C++ 是在 C 的基础上引入面向对象概念。这一观点并不完全准确。C 语言是一中简洁优雅的语言,若仅仅引入面向对象概念,由怎么会有众多编写 C++ 的大师认为自己对 C++ 的了解并不深呢?可想而知,C++ 比单纯的 “C 语言 + 面向对象” 还要更复杂得多。

    C++ 在设计的时候同样也考虑到程序设计过程中的类型转换问题,但C语言风格的类型转换对于 C++ 来说过于简单粗暴(通过括号及目标类型来进行转换)。试想想,C 中只有基本数据类型以及用户自定义的 struct 结构,因此这样“简单粗暴”的类型转换对C来说是足够,但对引入面向对象之后的 C++ 却不然,至少 C++ 还有着无数程序员自定义的类。因此 C++ 也拥有自己的类型转换操作符。

    除了上面所说的原因,还有另一个优先使用C++ 风格类型转换操作符的原因是 ...


  2. Reference or Pointer?

    引用还是指针

    在C++中,变量有着两种存在形式:引用与指针。

    引用与指针在使用方式上完全不同,但它们的功能都是一样的。都是用来间接引用其他对象。

    为了更清晰在什么场合下更适合使用引用或是指针,以下做一个整理:

    首先,引用不同于指针,不能指向空引用。这也就是说,引用必须指向某个对象。由这一点,我们可以知道,当所指向的对象可能有空引用的情况出现时,就必须使用指针,而当对象永远都不可能称为空引用时,才可以使用引用。

    其次,引用在定义的时候必须对其初始化,而指针没有这样的限制。所以当存在有不同初始化可能的时候应用使用指针,而不能使用引用。但这点也意味着引用的代码效率要比指针高,因为使用指针之前,必须对指针进行合法性验证,否则会出现对空指针进行操作的错误。

    另外,引用所指向的对象一旦初始化之后就不能再改变指向的对象,而指针也没有这样的一个限制。因此以下的代码中引用与指针所做的事情是有本质上的不同

    string s1("Nancy");
    string s2("Clancy");
    string& rs = s1;
    string * ps = &s1;
    rs = s2;
    ps = &s2 ...

Page 1 / 1