位域定义

测试环境:vc6.0

struct mybitfields
{
unsigned short a : 4;
unsigned short b : 5;
unsigned short c : 7;
} test;
=> sizeof(test) == 2;

struct mybitfields
{
unsigned char a : 4;
unsigned char b : 5;
unsigned char c : 7;
} test;
=> sizeof(test) == 3;

struct mybitfields
{
unsigned char a : 4;
unsigned short b : 5;
unsigned char c : 7;
} test;
=> sizeof(test) == 6;

struct mybitfields
{
unsigned short a : 4;
unsigned char b : 5;
unsigned char c : 7;
} test;
=> sizeof(test) == 4;

struct mybitfields
{
unsigned char a : 4;
unsigned char b : 5;
unsigned short c : 7;
} test;
=> sizeof(test) == 4;

struct mybitfields
{
unsigned char a : 4;
unsigned int b : 5;
unsigned short c : 7;
} test;
=> sizeof(test) == 12;

构造函数出现异常时的行为

char *g_pszTest = NULL;

class B
{
public:
B()
{
cout << "B constructed" << endl;
}

~B()
{
cout << "B destructed" << endl;
}
};


class C
{
public:
C()
{
cout << "C constructed" << endl;
}

~C()
{
cout << "C destructed" << endl;
}
};

class A : public B
{
public:
A()
{
cout << "A constructed" << endl;
g_pszTest = new char[20];
strcpy(g_pszTest, "before throw");
throw 1;
strcpy(g_pszTest, "after throw");
}

~A()
{
cout << "A destructed" << endl;
if (g_pszTest != NULL)
{
cout << g_pszTest << endl;
}
}

private:
C m_c;
};

该段程序代码输出为:
B constructed
C constructed
A constructed
C destructed
B destructed
before throw

1. 构造函数throw之后的代码不会被执行;
2. throw了异常的类的析构函数不会被执行,但throw之前已经构造的对象的析构函数会被正常执行。

构造析构的顺序问题

#include 
using namespace std;

class M
{
public:
M()
{
cout << "M constructed" << endl;
}

~M()
{
cout << "M destructed" << endl;
}
};

class N
{
public:
N()
{
cout << "N constructed" << endl;
}

~N()
{
cout << "N destructed" << endl;
}
};

class A : virtual public M
{
public:
A()
{
cout << "A constructed" << endl;
}

~A()
{
cout << "A destructed" << endl;
}
};

class B : virtual public M
{
public:
B()
{
cout << "B constructed" << endl;
}

~B()
{
cout << "B destructed" << endl;
}
};

class C : public B, public A
{
public:
C()
{
cout << "C constructed" << endl;
}

~C()
{
cout << "C destructed" << endl;
}

private:
N m_n;
};

int main()
{
// 构造的几点原则:
// 1. 先构造父类,然后构造子类
// 2. 虚拟继承,虚基类只会被构造一次
// 3. 多重继承,写在前面的先被构造(class C : public B, public A,所以B先于A被构造)
// 4. 先构造基类,然后构造成员对象(m_n)
// 所以,这里将依次输出:
// M constructed
// B constructed
// A constructed
// N constructed
// C constructed
C c;  

// 析造的重要原则:析构的顺序与构造的顺序刚好相反!
// 所以,这里将依次输出:
// C destructed
// N destructed
// A destructed
// B destructed
// M destructed
return 0;
}

要留住人才,必须培养自己的人才

    我一直对团队是否能够吸引到人才表示担忧,上次我已经说过,“团队的竞争对手不仅仅是创新基地、ACM团队,更包括微软、IBM、intel等等大型企业及清华北大等等著名高校,所以我们如果要留住人才,必须培养自己的人才,到大四再去搜罗人才的方法是行不通的”。
    这种担忧,已经成为一个严峻的现实了!
    昨天dian展示了ljz访美的照片,我相信大多数人都会很向往很羡慕他的经历,这不是崇洋媚外,而是一种向往美好事物的天性。intel这种大公司是有很强的号召力的,它出得起钱,它随便搞个活动,就可以让ljz们激动好几个星期,团队与之相比,相形见绌!
    我觉得团队要警觉起来。现在团队很多人,都沉浸在一种优越感之中,感觉团队很了不起,是众多学生梦寐以求想进入的地方。梦寐以求的确不假,但这仅仅是因为现在机会太少了,眼界太窄了,等到他们看到了机会,他们还会梦寐以求团队吗?在团队很辛苦,干得再多也不会加分,相比之下,做大赛很轻松,还可以加分免试保研甚至出国观光,找工作的时候,这种经历一写,顶上在团队做好几个项目。另外,团队出去的同学普遍缺乏表现力,英语水平又差,大多数人一看就是标准的蓝领,干本份工作的。
    现实是残酷的,当我们还陶醉于自己的成绩的时候,我们可能很快就会失去自己的优势,我们的竞争对手太强了!我们的优势是做真实项目,但这也是我们最大的掣肘。真实项目意味着细节,意味着无限期的维护,当我们把GEMMING当成团队的人才培养基地的同时,也意味着我们终将为太大细节牵扯过多精力。细节很重要,但细节不是全部,我们需要open的精神,需要表现力,需要fluent oral english。
    我希望团队以后能够做点改变。
    首先,要尽快形成自己的核心竞争力,要提高项目的平均利润,要缩小项目数量,否则我们只能像现在这样在一些小项目上牵扯太多时间,而没有时间来培养人,熏陶人,提高人的气质和综合素质;
    我不得不说,我们的思路存在着自相矛盾的地方。一方面我们要培养帅才,培养创新能力,另一方面,我们却把绝大多数精力放在了细节问题上,任何事情,要是太牵涉到细节,就会变成体力活。创新的过程,应该是一个不断有idea,不断有时间去实现idea的过程,而不是郁于某件事情,某个idea,我觉得我们现在太缺时间了,项目忙得要死,还怎么会有时间去实践自己的idea呢?
    第二,要形成自己的理论方向,这年头,做ARM7、ARM9的都是产业链的最低层次,很多公司,我知道的sinfor、nsfocus,他们的产品有硬件平台,但他们自己不做,直接外包,因为最赚钱的不是ARM7/9的板子,而是在板子上跑的技术。这一点在招聘会上表现得淋漓尽致,人家第一条肯定不会说“熟悉ARM7/9”,而会说“熟悉移动通信理论….”,“熟悉ARM7/9”最多不过是个plus而已;
    这不是怀疑我们积累的技术的价值,缺乏理论方向的确是我们的软肋,我觉得我们要有这样的抱负,除非我们不做这样的定位。当然,在目前看来,我觉得我们至少在3年之内,是没有办法在这方面取得实质性的突破的。
    第三,我们不仅要培养有宽阔视野的人,更要培养创新思维。昨晚dian说到zxt做的那个东西,虽然把人家开发板所有功能都用上了,但是没有创新,一刀砍死,他们这种作品注定拿不到大奖。创新需要钻研,否则功能垒得再多,人家也不会认可你的。团队在创新这方面无疑是有很大缺陷的,队员普遍缺乏创新性思维,上次MS那个嵌入式大赛可见一斑,再如昨天看到的虚拟实验室和成都科技馆的很多展项比起来,更是相形见绌;
    第四,我们要走出去,迎进来,我们也要参赛,我们的项目要鼓励多样性,没有必要老是固守在真实项目上。我们没有必要去抵抗大公司的进攻,我们要利用大公司发展自己,老是抓住真实项目不放,对人对己,都没有什么好处。
    我不是说不要项目,而是说,我们要重视参赛!我清晰的记得,我们曾经有一段时间,对参赛是抱有一种不屑的,参赛甚至成为我们对比于创新基地的资本,走出去,迎进来,我们应该感谢ljz给我们带来的这次思想上的冲击!

莫衷一是!

    昨天goldenray的生日,但他在实验室中度过过了一天;昨天duoergun的女朋友来了,就陪女朋友出去玩了。江山、美人,孰轻孰重?在这一刻,我感觉自己价值观模糊了。我能说duoergun不对吗?我也经历过项目和女朋友之间的抉择,我能够体会到这种难处,我只能说,goldenray非常敬业!
    团队的兄弟们都太辛苦了,想起了王翰的诗:
    凉州词
    葡萄美酒夜光杯, 欲饮琵琶马上催。 
    醉卧沙场君莫笑, 古来征战几人回。