本文主要是介绍【深度探索C++对象模型读书笔记】【第7章】站在对象模型的尖端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、Template
1、class expression templates将在编译时期而非执行时期被评估,因而带来重大的效率提升。
2、当编译器看到template class声明时,在实际程序中,什么反应也没有。template class中的任何member,只能通过template class的某个实例来操作。
template <class Type>
class Point{
public:enum Status{ unallocated,normalized };Point(Type x=0.0,Type y=0.0,Type z=0.0);~Point();void* operator new(size_t);void operator delete(void*, size_t);
private:static Point<Type> *freeList;static int chunkSize;Type _x, _y, _z;
};
//我们可以这样写:
Point<float>::Status s;
//但不能这样写:
Point::Status s;
3、 如果定义一个指针,指向特定的实例,如:Point< float > *ptr = 0; 程序中什么也没有发生,因为一个指向class object的指针,本身并不是一个对象,编译器不需要知道与该class有关的任何members的数据或object的布局数据,因此将一个Point实体实现没有必要。如果不是pointer而是reference,那么它真的会实例化一个Point的float实例,因为reference并不是无物的代名词。
4、memb
这篇关于【深度探索C++对象模型读书笔记】【第7章】站在对象模型的尖端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!