1、如果你只声明了一个指针,并把它传入到模版类参数当中去,模版类会通过编译,但是当程序运行的时候会立即奔溃,因为它只是个指针并没有被分配空间;
2、假设你输入的是一个数组的首地址指针,你要知道数组名是一个右值是无法被更改的。假设现在你的template函数中有一个,它的形参是引用类型,引用类型指向的是一个左值,即可被更改的量。这样,你把一个右值放在本该是左值的地方,这肯定会报错。因为左值意味着它可被更改,而右值意味着它绝对不能被更改,所以从原则上讲就不行。从实际角度讲,万一函数中哪条语句对右值进行更改了怎么办,具体来讲就是对数组名赋值,这显然还是不行。
3、你对一个指针动态分配空间。这个可以解决1和2中所产生的问题,但是这么做在有些情况下可能没用。因为是动态分配空间,所以有空间,1中问题解决。因为动态分配的指针,是一个指针变量,满足左值的条件,2中问题解决。但是,为什么没用呢?C++ Primer Plus中举了个stack模版类的例子,无论你pop还是push,因为指针只是充当了数组首地址的作用,它不变,因而它指向的内容只剩下最新更改过的内容,以前的全被覆盖,这对stack来说压根没用。
Template<class T>中的T是指针的话会产生哪些问题?
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。