
The C++ Object Model
Savitch
I have nothing to offer but blood toil tears and sweat
展开
-
深度探索C++对象模型第一章第一节重点
C++的额外成本 C++较之C的最大区别,无疑在于面向对象。类相较于C的struct不仅只包含了数据,同时还 包括了对于数据的操作。在语言层面上C++带来了很多面向对象的新特性,类、继承、多态 等等。新特性使得C++更加强大,但同时却伴随着空间布局和存取时间的额外成本。作为一 个以效率为目标的语言,C++对于面向对象的实现,其实不大,这些额外成本主要由 virtual引起,包括: vi原创 2013-10-03 17:28:48 · 448 阅读 · 0 评论 -
静态初始化--我的理解
转载自: http://blog.youkuaiyun.com/viper/article/details/6678 首先要明确的是,所有的初始化都是运行时完成的。 0) int g; 1) int global = rand(); 2) const int ci = 5; 3) struct test 4) { 5) test() : i_(10) {} 6) int i转载 2013-10-13 15:13:27 · 331 阅读 · 0 评论 -
Default Memberwise Initialization 和 Bitwise copy semantics有什么区别
······ Default Memberwist Initialization: During initialize an object, base class's constructor(s) is(are) called, data members' are called, this constructor is called. Of course, this原创 2013-10-12 20:04:13 · 490 阅读 · 0 评论 -
纯虚函数的类为什么不能被实例化
······ 纯虚函数为什么不能被实例化,以及其内部机制到底是怎么运行的,这个问题一直困扰我。 下面我们给与解释: ······ virtual void x() = 0; 这句,等于告诉编译器在VTABLE中为函数保留一个间隔,但在这个特定间隔 中不放地址。只要有一个函数在类中被声明为纯虚原创 2013-10-10 11:24:50 · 2199 阅读 · 0 评论 -
内联失败函数变成static函数的一些问题
······ 最近看,其中关于内联函数有一段话: 如果内联函数因其复杂度,或因其建构问题,被判断不可成为“inline”,它会被转为一个static函数,并在“被编译模块”内产生对应的函数定义。 ······ 关于这个问题我只能说这个是在非类的成员里面的实现方式。因为在类中,我们并存在多个文件共享内联函数的问题。所以在类中,只需要 变成常态的函数,而不是静态的函数。 详细的关于为什原创 2013-10-09 21:04:15 · 443 阅读 · 0 评论 -
member selection 运算符是什么
······ 详细资料请参考 http://msdn.microsoft.com/zh-cn/library/fk812w4w(v=vs.90).aspx 这里只是简单的谈一下: 非静态成员函数通过对象或者指针的两种operator 即 ->和. 进行访问。其中->和. 就是member selection 运算符。 ······原创 2013-10-09 17:28:15 · 614 阅读 · 0 评论 -
单一元素的数组放在一个struct的尾端
`````` #include using namespace std; struct mumble { // /* stuff */ char pc[ 1 ]; }; int main(){ char string[] ="ga"; struct mumble *pmumb1 = ( struct mumble* ) malloc(si原创 2013-10-06 08:59:53 · 642 阅读 · 1 评论 -
Named Return Value Optimization (具名返回值优化)
本文转载自:http://blog.youkuaiyun.com/fanster28_/article/details/5006993 Named Return Value Optimization 具名返回值优化 问题描述 : 当一个函数返回一个对象的实例,一个临时对象被创建并通过拷贝构造函数传回其值。 C++ 标准允许省略拷贝构造函数的对象(即使会导致程序结果的不一致)。 前提是原创 2013-10-05 10:44:01 · 432 阅读 · 0 评论 -
关于深度探索C++对象模型笔记
笔记中大多摘引的是http://www.roading.org/develop/cpp/%E3%80%8A%E6%B7%B1%E5%BA%A6%E6%8E%A2%E7%B4%A2c%E5%AF%B9%E8%B1%A1%E6%A8%A1%E5%9E%8B%E3%80%8B%E7%AC%94%E8%AE%B0%E6%B1%87%E6%80%BB.html 同时加入了一些自己以前不懂的问题说明原创 2013-10-03 17:33:49 · 399 阅读 · 0 评论 -
c++构造函数、析构函数为什么不能取地址
······ C++ 标准里12.1 12.2章节 Because constructors do not have names, they are never found during name lookup; however an explicit type conversion using the functional notation (5.2.3) will cause a con原创 2013-10-14 11:40:48 · 802 阅读 · 0 评论