总有人问引用占多大内存空间。确实很容易让人迷惑,但这是一个不应该想的问题,我这里不多说。对这一类的问题,我总是先强调“概念”和“实现”的区别,再告诉他们:如果某个引用在其生命周期内,其绑定到的对象是可见的,那么这个引用时不占用空间的,否则就得占用一个指针的空间“。注意这句话是错的,但不是我对引用理解有错,而是总结和表达有问题。事实是:使用引用时,如果编译器能静态解析出这个引用绑定到哪个对象上,就会直接替换为该对象(在这种情况下,引用有点像宏#define),否则就用指针实现。
以前很菜的时候(现在也很菜)没少干不懂装懂胡扯误导新手的事。后来会的东西多了一点,才懂得不去回答那些自己不懂或不确定的问题。现在才发觉,即使是那些自己认为懂了的,也难免会因为表达错误或总结不完善而误导了别人。谨言慎行啊。