随笔分类 -  C/CPP学习

上一页 1 ··· 5 6 7 8 9 10 下一页
摘要:先说一个事情, mangle 的意思是 vt.乱砍, 损坏; n. 碾压机。 这意味着 name mangling 就是要先把你精心想出的名字们碾碎, 再拼成独一无二的样子, 当然这么残忍的事情都是编译器瞒着你做的。一般而言, member 的名称前会被加上 class 名称, 形成独一无二的命名,... 阅读全文
posted @ 2014-11-22 20:27 wu_overflow 阅读(1006) 评论(0) 推荐(0)
摘要:C++ 的设计准则之一就是: nonstatic member function 至少必须和一般的 nonmember function 有相同的效率。 这就是说, 如果我们在以下两个函数之间做选择:float magnitude3d(const Point3d *_this){...}float ... 阅读全文
posted @ 2014-11-22 16:02 wu_overflow 阅读(869) 评论(0) 推荐(0)
摘要:指向 data member 的指针是一个颇有用处的语言特性, 特别是如果你需要详细调查 class members 的底层布局的话。这个调查可以帮助你决定 vptr 是放在尾端还是起始处。 另一个用途是可以用来决定 clas 中 access sections 的次序。考察以下代码, 其中有一个 ... 阅读全文
posted @ 2014-11-22 14:14 wu_overflow 阅读(305) 评论(0) 推荐(0)
摘要:虚拟继承多重继承的一个语义上的副作用就是, 它必须支持某种形式的 shared subobject 继承, 一个典型的例子是最早的 iostream library:// pre-standard iostream implementclass ios{...};class istream: pub... 阅读全文
posted @ 2014-11-21 13:04 wu_overflow 阅读(185) 评论(0) 推荐(0)
摘要:加上多态的情况如果我要处理一个坐标点, 而不在意这是一个 Point2d 或 Point3d 实例, 那么就需要在继承关系中提供一个 virtual function 接口:class Point2d{public: Point2d(float x = 0.0, float y = 0.0) ... 阅读全文
posted @ 2014-11-20 23:48 wu_overflow 阅读(267) 评论(0) 推荐(0)
摘要:在 C++ 继承模型中, 一个derived class object 所表现出来的东西, 是其自己的的 members 加上其 base class members 的总和。 至于 derived class members 和 base class members 的排列次序并未在 C++ St... 阅读全文
posted @ 2014-11-19 17:28 wu_overflow 阅读(267) 评论(0) 推荐(0)
摘要:考察以下代码:Point3d origin;origin.x = 0.0;此例中 x 的存取成本是什么? 答案则是视 x 和 Point3d 而定(别打脸, 我知道这是废话)。 具体的呢? 因为 x 可能是个 static member, 也可能是个 nonstiatic member; Point... 阅读全文
posted @ 2014-11-19 14:07 wu_overflow 阅读(348) 评论(0) 推荐(0)
摘要:考察以下代码:class Point3d{public: //... private: float _x; static List *freeList; float _y; static const int chunkSize = 250; float _z... 阅读全文
posted @ 2014-11-18 21:21 wu_overflow 阅读(195) 评论(0) 推荐(0)
摘要:考察以下代码:extern float _x;//user codeclass Point3d{public: Point3d(float, float, float); //问题来了, 是哪一个 _x? float X() const {return _x;} void ... 阅读全文
posted @ 2014-11-17 21:47 wu_overflow 阅读(235) 评论(0) 推荐(0)
摘要:之前我曾有一篇博客讨论过 sizeof 一个类的值的问题, 但只是在讨论一个孤立的类, 没有考虑到 derived 的问题, 在此补充更多的情况。考察以下代码:class X{};class Y: public virtual X{};class Z: public virtual X{};clas... 阅读全文
posted @ 2014-11-17 19:48 wu_overflow 阅读(232) 评论(0) 推荐(0)
摘要:下列情况中, 为了让程序顺利编译, 必须使用 member initialization list:1. 初始化一个 reference member 时;2. 初始化一个 const member 时;3. 当调用一个 base class 的 constructor, 而它拥有一组参数时;4. ... 阅读全文
posted @ 2014-11-16 15:52 wu_overflow 阅读(297) 评论(0) 推荐(0)
摘要:一丶程序的转化考察以下代码:1 X Foo()2 {3 X xx;4 //...5 return xx;6 }看到这个, 你可能会有两个想法:1. 每次 Foo() 被调用, 就会传回 xx 的值.2. 如果 class X 定义了一个 copy constructor, 那... 阅读全文
posted @ 2014-11-15 21:04 wu_overflow 阅读(325) 评论(0) 推荐(0)
摘要:如 default constructor 一般, 编译器也不会因为一个 class 没有 copy constructor 而产生出一个, 编译器只会在必要时才会产生一个 copy constructor, 而这个"必要" 则是指当 class 不展现 bitwise copy semantics... 阅读全文
posted @ 2014-11-15 14:22 wu_overflow 阅读(758) 评论(1) 推荐(0)
摘要:default constructor 会在需要的时候被编译器产生出来---->一切从这开始, 是在谁需要的时候? 考察以下代码:class Foo{public: int val; Foo *pnext};void FooBar(){//Foo Object 须在此初始化Foo bar;if(ba... 阅读全文
posted @ 2014-11-14 14:42 wu_overflow 阅读(236) 评论(0) 推荐(0)
摘要:全为自己翻译, 如有不妥, 望请斧正.Programming In C++:[1] Represent ideas directly in code.[2] Represent relationships among ideas directly in code (e.g., hierarchica... 阅读全文
posted @ 2014-11-11 22:54 wu_overflow 阅读(163) 评论(0) 推荐(0)
摘要:1 ≡ sizeof(char) ≤ sizeof(short) ≤ sizeof(int) ≤ sizeof(long) ≤ sizeof(long long)• 1 ≤ sizeof(bool) ≤ sizeof(long)• sizeof(char) ≤ sizeof(wchar_t) ≤ ... 阅读全文
posted @ 2014-11-11 18:41 wu_overflow 阅读(203) 评论(0) 推荐(0)
摘要:全局变量的初始化时机: C 是在编译期初始化, C++ 是在程序运行时, main 函数之前初始化.不使用中间变量实现 strlen:int MyStrlen (const char *str){return *str? MyStrlen(++str) + 1 : 0;}C 语言函数参数入栈顺序为从... 阅读全文
posted @ 2014-11-11 13:19 wu_overflow 阅读(139) 评论(0) 推荐(0)
摘要:之前遇到过一个问题, 说是 sizeof(class_name) 的值是多少, 不解.But, 在看了 > 有所理解之后, 对于这个问题我似乎得到了正确的答案, 现总结如下, 如有不妥, 望请斧正(虽说我觉得几乎没人会看我的博客吧......= =)对了, 追求严肃的朋友请直接跳过括号内容, 嗯..... 阅读全文
posted @ 2014-11-07 01:58 wu_overflow 阅读(223) 评论(0) 推荐(0)
摘要:1. 除非有很好的理由选择其他容器, 否则应使用 vector.2.如果有很多小的元素, 且空间的额外开销很重要, 则不要使用 list 或 forward_list.3.如果程序要求随机访问元素, 应使用vector 或 deque.4.如果程序需要在头尾 插入/删除 元素,且不会在中间插入元素,... 阅读全文
posted @ 2014-11-05 21:49 wu_overflow 阅读(220) 评论(0) 推荐(0)
摘要:我的理解是, 插入排序最适合两种场景: 1). 较为有序情况; 2). 元素较少的情况. 所以, 希尔排序的思路就是:1. 先把原始集合分割为一个个较小的集合, 进行插入排序, 符合场景2)2. 再将 1 处理后的集合切割为更小的集合, 继续进行插入排序, 仍符合场景2)3. 当每一子集合的元素个数... 阅读全文
posted @ 2014-11-03 23:23 wu_overflow 阅读(132) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 下一页