c++ 学习

c++ gotch
有点象C++FAQ那本书
基础:
1 public protected private区别
public 所有人都可访问
protected 只有自类和友元可访问
private 都不能访问
private 和 protected的语意都表示has-a 而public 表示 is kind of
2 虚函数
a.当你希望用基类指针表示派生类对象时,使用.
b.当基类有虚函数时,同时应该使用虚析钩函数,因为delete一个基类的指针对象,如果没有虚解析构函数,将调用基类的析构函数.

c.纯虚函数使类成为抽象基类,抽象基类使接口和实现分离



2004年10月11日17:16:16
陷阱8,接口与实现分离,好处是节省编译时间,特点是基类中的私有部分只保留一个指向具体实现类的的指针,公有部分是函数接口,基类不包含具体数据.正如书中讲的C++并没实现数据隐藏,在私有部分的数据的改动会引起重新编译,因此并没有实现隐藏只实现了数据保护。坏处是运行时代价大了。
陷阱13,标准库中vector的实现是如何高效的?
2004年10月12日10:27:58
陷阱15,优先级和结合性,赋值=具有右结合性,+等具有左结合性。类成员指针的使用。
陷阱16,最长符号,词法分析中的最大贪婪咀嚼(maximal munch), a+++++b的合法性,右值.
2004年10月14日9:43:56
昨天网络出问题:
陷阱25,#define的作用域不局限在类内,应该是编译单元的范围?在类内定义一个常量,不用#define,用static const 也不好,一贯做法是enum { S=32 };
陷阱26,#define伪函数 与do while(0)
陷阱49,类的拷贝构造函数与赋值函数,编译器提供的缺省拷贝构造函数和缺省赋值函数是按成员复制的(而不是按位),有时候这种行为正确而时候错误,这时需要自己提供赋值函数。例如类内存在指向某个内存快的指针,这时在两个类对象之间赋值时,会出错。
陷阱51,尽量使用初始化列表,因为高效率,不会导致临时对象和赋值操作。但对简单类型效率相同。类静态成员需要在CPP文件中显示定义,所以不能在初试化列表中赋值。named -constructor在private,protected中声明所有的构造函数,并用一个static 方法返回类对象。
2004年10月15日16:57:10

陷阱69,基类中不应含有类型代码,派生类指针对象互相=只=基类部分,虚函数表不复制(是这样吗?)

2005年10月15日
算符的优先级
offset = !intra * LEVELOFFSET; 此处的!先和intra结合

posted on 2004-10-11 17:16  embed  阅读(586)  评论(0编辑  收藏  举报

导航