发表于04-08-16 06:13 | 阅读 306 |
评分 (暂无)
默认的member function是静态绑定的,编译期就决定了。若要获得动态绑定,须加上virtual。
虚函数机制不会发生作用的两种情况:
1.基类的构造函数和析构函数决不会调用派生类的虚函数,即调用的一定是基类自身的函数。
2.使用的是基类的对象,而非指针或引用。只有通过指针和引用才可发挥多态的威力。
要正确析构对象,应将destructor申明为virtual,但不要申明为pure virtual。
发表于04-08-09 01:13 | 阅读 269 |
评分 (暂无)
C++同时支持OO和OB两种设计。
OO:Object Oriented,支持多态这一强大的设计机制,需要付出的代价便是额外的间接性(virtual机制)。
OB:Object Based,非多态的数据封装模型,就是C中ADT(Abstract Data Type)的概念,和OO相比拥有更快的速度而且空间更紧凑(因为不需要virtual)。
OO和OB的设计其实就是在弹性和效率之间的取舍。
-- 《Inside The C++ Object Model》
发表于04-08-09 00:55 | 阅读 238 |
评分 (暂无)
如果没有多态和虚拟继承,在C++中,struct和class的存取效率完全相同!简单的说就是,存取class的data member和非virtual function效率和struct完全相同!不管该data member是定义在基类还是派生类的。
如果不是为了和C兼容,C++中就不会有struct关键字。因此建议是:如果不需要与C兼容或传递参数给C程序,不要在C++中用struct。
注意class的data member在内存中的布局可不一定是data member的申明次序。C++只保证处于同一个access section的data member按照申明次序排列。
-- 《Inside The C++ Object Model》
发表于04-08-09 00:46 | 阅读 288 |
评分 (暂无)
1.简单对象模型
一个Object由一系列的slots构成,每个slot指向一个data member或constructor或destructor或function member。Object只包含指针。每个base class subobject都可由一个slot指出。
优点:编译器设计简单。
缺点:空间和执行期效率。
2.表格驱动对象模型
分为两个table,一个指向data member table(直接含实际数据),一个指向function member table(内含函数地址)。
优点:可以方便地支持virtual function。
缺点:空间和执行期效率。
3.C++对象模型
每个Object直接包含实际的data member,在最后添加一个指针vptr指向virtual table(内含一系列virtual function指针和一个通常在最前面的RTT ...
发表于04-08-07 17:34 | 阅读 266 |
评分 (暂无)
来源:<The C++ Programming Language>
void f(int* pi)
{
void* pv = pi; // ok: implicit conversion
*pv; // error: can't dereference void*
pv++; // error: the size of the object pointed to is unknown
...
发表于04-08-06 02:22 | 阅读 313 |
评分 (暂无)
★ 尽量使用 0 代替NULL,因为编译器根据上下文决定0的类型。
★ 如果一定要定义NULL,定义为 const int NULL=0;
★ 初始化数组时,如果数量不够,用0补足:
int v[8] = {1, 2, 3}; // v[3]=v[4]=...=0
★ 定义的两个类型如果互相引用,可以先申明类型名字:
struct List;
struct Map {
List* p;
};
struct List {
Map* p;
};
★ 以下晦涩难懂的字符串复制函数是强烈反对的:
void cpy(char*&nb ...
发表于04-07-29 06:09 | 阅读 262 |
评分 (暂无)
宏在C中有非常重要的地位,但是,在C++中,Bjarne Stroustrup建议非到万不得已,不要使用宏,因为C++提供了其他多种方法来取代宏。
没有必要的宏:
#define PI 3.1416
对常量定义,尝试用const取代,编译器会对const进行类型检查。
非常危险的宏:
#define SQR(x) x*x
如果写了一个SQR(2+x),它会被扩展成2+x*2+x,结果并非你想象的(2+x)*(2+x),不要对函数使用宏,即使要提高效率,也可以使用template inline函数。
——《The C++ Programming Language》
发表于04-07-08 01:26 | 阅读 279 |
评分 (暂无)
当政府对一种物品征税时,谁来承担税收负担?经济学家用税收归宿这个术语来指这些关于税收负担分配的问题。
一般性结论:
* 税收抑制了市场活动。当对一种物品征税时,该物品在新的均衡时销售量减少了。
* 买者与卖者分摊税收负担。对买者征税和对卖者征税是相同的。
* 税收负担更多地落在缺乏弹性的市场一方身上。需求弹性小意味着买者对消费这种物品没有适当的替代品。供给弹性小意味着卖者对生产这种物品没有适当的替代品。
* 税收引起无谓损失是因为它使买者和卖者不能实现贸易的好处。
税收归宿:关于由谁来承担税收负担的研究。
无谓损失:税收引起的总剩余减少。
发表于04-07-08 00:45 | 阅读 258 |
评分 (暂无)
[问题] 农民的好消息会是农民的坏消息吗?
当农业科学家培育出更高产的小麦时,影响供给曲线向右移动,需求曲线不变。由于小麦这种基本食品需求一般是缺乏弹性的,所以价格下降引起总收益减少。
[结论] 农民的状况变坏了是由于生产率的提高,这也是为什么从事农业的人数在不断减少的原因。
[问题] 为什么OPEC不能保持石油的高价格?
70年代OPEC决定提高世界石油价格,以增加它们的收入。但是OPEC发现要维持高价是困难的,因为供给与需求在短期与长期中状况是不同的,短期中,石油的供给和需求是缺乏弹性的,长期情况却非常不同,OPEC以外的石油生产者对高价的反应是增产,消费者的反应是更节俭,因此长期的供给和需求都富有弹性。
[结论] OPEC只在短期中成功地保持了高价,而减少供给在长期中并无利可图。
[问题] 禁毒增加还是减少了与毒品相关的犯罪?
虽然禁毒目的是减少毒品,但是它直接影响毒品卖 ...
发表于04-07-07 20:23 | 阅读 449 |
评分 (暂无)
供给规律表明,价格上升供给量增加。供给价格弹性衡量供给量对价格变动的反应程度。如果供给量对价格变动的反应很大,可以说这种物品的供给是富有弹性的,反之,供给是缺乏弹性的。
供给价格弹性取决于卖者改变他们生产的物品产量的伸缩性,例如,海滩土地供给缺乏弹性是因为几乎不可能生产出土地,相反书,汽车这类制成品供给富有弹性。
大多数市场上,供给价格弹性关键的决定因素是所考虑的时间长短。在长期中的弹性通常都大于短期。在短期中,企业不能轻易地改变工厂规模来增加或减少一种物品的生产。在长期中,企业可以建立新工厂或关闭旧工厂,此外,新企业可以进入一个市场而旧企业可以关门,因此在长期供给中供给量可以对价格作出相当大的反应。
计算供给价格弹性:
供给价格弹性 = 供给量变动百分比 / 价格变动百分比
由于企业通常有最大生产能力,所以在供给量非常低时,供给弹性会非常高,而在供给量水平高时,供给弹性又会非常低:
发表于04-07-07 19:03 | 阅读 482 |
评分 (暂无)
需求规律表明,一种物品的价格下降使需求量增加。需求价格弹性衡量需求量对其价格变动的反应程度。如果一种物品的需求量对价格变动的反应大,可以说这种物品的需求是富有弹性的。反之,需求是缺乏弹性的。
决定需求价格弹性的一般规律:
* 必需品倾向于需求缺乏弹性,而奢侈品倾向于需求富有弹性。
* 有相近替代品的物品往往较富有需求弹性。
* 范围小的市场需求弹性往往大于范围大的市场。
* 物品往往随着时间变长而需求更富有弹性。
计算需求价格弹性(取绝对值):
需求价格弹性 = 需求量变动的百分比 / 价格变动的百分比
当弹性大于1,需求是富有弹性的,小于1,需求是缺乏弹性的,等于1,需求是单位弹性,等于0,需求完全没有弹性。&nbs ...
发表于04-07-06 08:01 | 阅读 387 |
评分 (暂无)
可以直接相加:
string s1 = "Hello";
string s2 = "world";
string s3 = s1 + ", " + s2 + "!\n";
可以附加:
s1 += '\n';
可以比较:
if (s1==s2) {
...
}
else if(s1=="yes") {
...
}
可以操作子串:& ...
发表于04-07-06 07:50 | 阅读 285 |
评分 (暂无)
最简单的C++程序:
int main() {}
“Hello, world!”程序:
#include<iostream>
int main()
{
std::cout<<"Hello, world!\n";
}
main()返回0表示成功,非0表示失败。
发表于04-07-06 07:44 | 阅读 283 |
评分 (暂无)
1. Don't panic! All will become clear in time;
2. You don't have to know every detail of C++ to write good programs;
3. Focus on programming techniques, not on language features.
-- 出自<<The C++ Programming Language>>
发表于04-07-05 07:22 | 阅读 304 |
评分 (暂无)
当比较一个人,一个企业或一个国家与另一个人,另一个企业或另一个国家的生产率时,经济学家用了绝对优势这个术语。生产者生产一种物品所需要的投入量较少,就可以说该生产者在生产这种物品中有绝对优势。
生产1磅牛肉
生产1磅土豆
农民
20小时
10小时
牧人
1小时
8小时
另一种方法考察生产土豆的成本,不比较所需的投入,而比较机会成本:
牧人的机会成本:1磅土豆=8磅牛肉
农民的机会成本:1磅土豆=0.5磅牛肉
因此农民在种植土豆上有比较优势,而牧人在生产牛肉上有比较 ...
发表于04-07-05 07:04 | 阅读 355 |
评分 (暂无)
人们通常认为降低通货膨胀会引起失业暂时增加。通货膨胀与失业之间的这种交替关系被称为菲利普斯曲线。
当政府减少货币量时,它就减少了人们支出的数量。较低的支出与居高不下的价格结合在一起就减少了企业销售的物品与劳务量。销售量减少又引起企业解雇工人,就暂时增加了失业。
菲利普斯曲线:通货膨胀与失业之间的短期交替关系。