同事走了

2016/07/30 同事调离岗位、具体了解公司

Posted by WangXiaoDong on July 30, 2016

时间:2016年7月30日 天气:晴:sunny:


Author:冬之晓:disappointed:
Email: 347916416@qq.com
MyAppearance: MyAppearance

    今天是周六,同宿舍的一位舍友要走了,我就决定搬到宿舍里屋。这位舍友叫杨志成
,他是另一家公司的职员,他来我现在的单位上班只是出差,因为这边的单位是新成
立的,因此就过来出差了一年。早晨他走的时候把能留下的东西都给我了,比如说衣架、
洗衣粉、电脑桌、镜子之类的生活用品。我非常感动,这个世界上还是好人比较多。
    在宿舍这边由于距离吃饭的地方比较远,而且天气非常热,因此到吃饭的时
间都不想出门。可是到了下午自己快饿死了,就决定和江威一起去超市转转。
    去完超市后,我全身都汗湿透了。非常难受,不过在超市里面发现了好多甜点,非常
棒!下午,我到相邻宿舍里坐了一下,给他们带点吃的东西,因为刚来公司我的手机就丢
啦,当时多亏这个同事给我画了一张从公司到宿舍的地图。顺便问问公司的情况,最后得
到的结论是公司比较小……

今天是周六,我决定放松一下心情,复习一下C++的基础内容。虽说是基础,但是我感觉还是比较重要的,这些内容来自于《Effect C++》,我把一些重要的知识点摘抄下来,以便以后能够随时复习!

术语

我觉得C++里面比较重要的基础就是一些术语

  • 首先较为重要的术语就是声明式,它是用来告诉编译器某个东西的名称和类型,但略去细节。

如下面几个例子:

extern int x;   //对象声明式
std::size_t numDigits(int number);   //函数声明式
class Widget;   //类声明式
//下面的一个声明式我也不熟,从没用过!
template<typename T>   //模板声明式
class GraphNode;

注意:每个函数的声明揭示了其签名式,也就是参数返回类型。例如上述代码中的numDigits的签名就是std::size_t (int)

  • 定义式的任务是提供编译器一些声明式所遗漏的细节。对对象而言,定义式是编译器为此对象拨发内存的地点。对函数函数模板而言,定义式提供了代码的本体。对类模板而言,定义式列出他们的成员

比如下面的例子:

int x;   //对象的定义式
std::size_t numDigits(int number)   //函数的定义式
{
    std::size_t digitsSoFar = 1;
    
    while((number /= 10) != 0) ++digitsSoFar;
    return digitsSoFar;
}
class Widget   //类的定义式
{
public:
    Widget();
    ~Widget();
    ...
};

//下面的一个定义式我也不熟,从没用过!
template<typename T>   //模板定义式
class GraphNode 
{
public:
    GraphNode();
    ~GraphNode();
};
  • 初始化给予对象初值的过程。对用户自定义类型的对象而言,初始化由构造函数执行。
  • 默认构造函数是一个可被调用而不带任何实参者。这样的构造函数要不就没有参数,要不就每个参数都有缺省值
  • explicit声明可以被用来阻止隐式类型转换。它能够禁止编译器执行非预期的类型转换。除非有一个好理由允许构造函数被用于隐式类型转换,否则最好都要声明为explicit
  • 出现=的地方要特别小心,即可能用来调用拷贝构造函数,也可能调用拷贝赋值操作符。区别是如果有新对象被定义,肯定调用的是构造函数!!
  • 不明确行为指某些C++构件的行为没有定义,如:
    int *p = 0;   //p是个null指针
    std::cout << *p;   //对一个null指针取值会导致不明确行为
    
    char name[] = "Darla";   //name是个数组,大小为6(尾端有null)
    char c = name[10];   //值到一个无效数组的索引也是不明确行为

不明确行为的结果是不卡预期的,一定要想办法避免!!