上一页 1 ··· 7 8 9 10 11 12 下一页
摘要: 1)所有虚基类子对象会按照深度优先,从左到右的顺序进行初始化 2)直接基类子对象按照他们在类定义中的声明的顺序被构造起来 3)非静态成员子对象按照他们在类定义体中声明的顺序被构造起来 4)构造函数体被执行 class B1{};class V1: public B1{};class D1: virtual public V1{}; class B2{};class B3{};class V2: p... 阅读全文
posted @ 2009-11-09 02:54 史莱姆 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 1. private的可见性: 私有成员对于任何能够看到其所属类定义的代码来说都是可见的。他会参与名字查找和重载决议, 因而可能使调用变得无效或具有二义性, 即使它本身可能永远不会被调用。 2. private的可访问性: 具有对某个成员的访问权的代码可以通过泄露该成员的指针的方式将其访问权限授予其他任何代码。 成员的名字只对其所属类的其他成员或者友元来说是可访问的, 而这里的其他成员也... 阅读全文
posted @ 2009-11-09 02:54 史莱姆 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 1. C++标准规定,函数模板不能偏特化2. 函数模板的特化并不参与重载决议非模板函数是C++的一等公民如果编译器没有发现合适的一等公民, 那么主函数模板作为C++中的二等公民被纳入考虑如果还不能选出唯一的主函数模板,编译器会根据一组相当晦涩的规则确定出那个主函数模板是最特化的函数模板特化并不参与重载决议.只有在某个主模板被重载的决议前提下,其特化版本才有可能被使用.而且编译器在选择住模板的时候并... 阅读全文
posted @ 2009-11-09 02:53 史莱姆 阅读(666) 评论(0) 推荐(1) 编辑
摘要: 1. 特化friend class template<class T> class Node;template<class T>class Tree{friend class Node<T>;} 2. 特化friend function1) 如果函数名前面没有::,就绝对不会引用某个template实体2) 如果函数名前面含有::,编译器会优先匹配常规non-t... 阅读全文
posted @ 2009-11-09 02:53 史莱姆 阅读(148) 评论(0) 推荐(0) 编辑
摘要: &*iter的用法 指向数组内元素的指针永远都是迭代器, 迭代器并非总是指针.所有符合标准的迭代器都要求提供operator*(),而且该操作符必须返回一个真正的T&。&*iter将迭代器转型为指针 &*iter, 先将迭代器解引用,获得容器内对象的直接引用,然后获取它的地址。 阅读全文
posted @ 2009-11-09 02:49 史莱姆 阅读(524) 评论(0) 推荐(0) 编辑
摘要: 私有继承是组合的一种语法上的变形(聚合或者 “有一个”) 例如,“汽车有一个(has-a)引擎”关系可以用单一组合表示为: class Engine {public: Engine(int numCylinders); void start(); // Starts this Engine};class Car {public: Car()... 阅读全文
posted @ 2009-11-09 02:49 史莱姆 阅读(577) 评论(0) 推荐(0) 编辑
摘要: 万不得已时才使用“placement new”语法。只有当你真的在意对象在内存中的特定位置时才使用它。例如,你的硬件有一个内存映象的 I/O计时器设备,并且你想放置一个Clock对象在那个内存位置。 阅读全文
posted @ 2009-11-09 02:48 史莱姆 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 当一个查看函数和一个变更函数名字相同,且参数个数与类型也相同时就有用了——即两者的不同之处仅在于一个有const另一个没有const。 const重载的一个常见应用是下标运算符。通常应该尽量使用标准模板容器,例如std::vector,但有时会需要在自己的类中支持下标运算符。一个经验法则是:下标运算符通常成对出现。 class Fred { ... };class MyFr... 阅读全文
posted @ 2009-11-09 02:48 史莱姆 阅读(335) 评论(0) 推荐(0) 编辑
摘要: static initialization order fiasco是对C++的一个非常微妙的并且常见的误解。不幸的是,错误发生在main()开始之前,很难检测到。 简而言之,假设你有存在于不同的源文件x.cpp 和y.cpp的两个静态对象x 和 y。再假定y对象的构造函数会调用x对象的某些方法。 就是这些。就这么简单。 结局是你完蛋不完蛋的机会是50%-50%。如果碰巧x.cpp的编辑单元先被初... 阅读全文
posted @ 2009-11-09 02:47 史莱姆 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 与构造函数反序:先被构造的,后被析构。 以下的例子中,析构的顺序是a[9], a[8], ..., a[1], a[0]: void userCode(){ Fred a[10]; // ...} 阅读全文
posted @ 2009-11-09 02:47 史莱姆 阅读(327) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 下一页