深入探讨C++对象模型 之 站在对象模型的尖端[1]

[入库:2005年8月19日] [更新:2007年3月24日]

本文简介:选择自 c_plus_learner 的 blog

template

template 的二个问题:

1.       template 的声明。当编译器看到一个template 声明时,编译器什么反应都没有。一切都不可用,只有通过template 的某个实体来存取或操作。

2.       template 的具现。

point < float > fpoint;//产生一份实体与point class float instantiation 在程序中产生关联。

point < float > *ptr = 0;//程序什么也没有发生,因为一个指向class object 的指针,本身不是一个class object。不需要具现一个float 实体。

point < float > &ref = 0;//会具现出一个“point float 实体”,他的真正语意是:

point < float > temporary ( float ( 0 ) );

const point < float > &ref = temporary;

因为reference 并不是无物的代名词。0被视为整数,必须被转换为类型为point < float > 的一个对象。如果没有转换的可能,这个定义就是错误的,会在编译时被挑出来。

c++ standard 让使用者来主导“具现”规则,有两个主要原因:

本文关键:深入探讨C++对象模型 之 站在对象模型的尖端
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top