摘要: 7.1 Template 7.1.1 Template 的 "具现"行为 C++ Standard 已经禁止编译器将"声明一个指针指向某个 template class" " 具现 "出来.如果不是指针,而是引用,则会将template"具现"出来. 一个 class object 的定义 都会导致 阅读全文
posted @ 2022-02-17 12:19 liyakai 阅读(22) 评论(0) 推荐(0) 编辑
摘要: 6.1 对象的构造和解构 一般而言,会把 object 尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作和摧毁操作. 6.1.1 全局对象 C保证,一定会在 main()函数中第一次用到 全局对象之前,把它构造出来,而在 main() 函数结束之前把 它摧毁掉. C中所有的g 阅读全文
posted @ 2022-02-17 12:18 liyakai 阅读(27) 评论(0) 推荐(0) 编辑
摘要: C++ 支持三种类型的 member functions: static, nonstatic, virtual。 4.1 Member 的各种调用方式 4.1.1 Nonstatic Member Functions(非静态成员函数) 非静态成员函数会被内化为nonmember 的形式.步骤: 改 阅读全文
posted @ 2022-02-17 12:17 liyakai 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 5.0.1 纯虚函数的存在 纯虚函数可以不经由虚拟机制静态地调用一个纯虚函数,纯虚析构函数除外,class 设计者一定得定义它[纯虚析构函数]. 因为每一个 derived class destructor 会被编译器加以扩展,以静态调用的方式调用其 "每一个 virtual base class" 阅读全文
posted @ 2022-02-17 12:17 liyakai 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 3 Data 语义学 对于空的 class,编译器会安插 1 byte的char,用以区分两个不同的object. 对象object的大小会受到三个因素的影响: 语言本身所造成的的额外负担(overhead) 当语言支持 virtual base classes时,就会导致一些额外负担.在 deri 阅读全文
posted @ 2022-02-17 12:16 liyakai 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 2. 构造函数语义学 关键词 explicit 之所以被导入这个语言,就是为了提供给程序员一种方法,使他们能够制止 "单一参数的constructor"被单做一个 conversion运算符.[说人话就是explicit关键字的作用就是防止类构造函数的隐式自动转换] 2.1 Default Cons 阅读全文
posted @ 2022-02-17 12:15 liyakai 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 1 关于对象 加上封装后的布局成本 封装特性不会带来任何空间或执行器的不良回应,C在布局以及存取时间上主要的额外负担是由 virtual 引起的,包括: 1. virtual function 机制 用以支持一个有效率的"执行期绑定"(runtime binding) 2. virtual base 阅读全文
posted @ 2022-02-17 12:14 liyakai 阅读(50) 评论(0) 推荐(0) 编辑