Template<class T>中的T是指针的话会产生哪些问题?

1、如果你只声明了一个指针,并把它传入到模版类参数当中去,模版类会通过编译,但是当程序运行的时候会立即奔溃,因为它只是个指针并没有被分配空间;
2、假设你输入的是一个数组的首地址指针,你要知道数组名是一个右值是无法被更改的。假设现在你的template函数中有一个,它的形参是引用类型,引用类型指向的是一个左值,即可被更改的量。这样,你把一个右值放在本该是左值的地方,这肯定会报错。因为左值意味着它可被更改,而右值意味着它绝对不能被更改,所以从原则上讲就不行。从实际角度讲,万一函数中哪条语句对右值进行更改了怎么办,具体来讲就是对数组名赋值,这显然还是不行。
3、你对一个指针动态分配空间。这个可以解决1和2中所产生的问题,但是这么做在有些情况下可能没用。因为是动态分配空间,所以有空间,1中问题解决。因为动态分配的指针,是一个指针变量,满足左值的条件,2中问题解决。但是,为什么没用呢?C++ Primer Plus中举了个stack模版类的例子,无论你pop还是push,因为指针只是充当了数组首地址的作用,它不变,因而它指向的内容只剩下最新更改过的内容,以前的全被覆盖,这对stack来说压根没用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 8,746评论 0 6
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,153评论 1 51
  • 指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; ...
    朱森阅读 8,820评论 3 44
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,491评论 11 349
  • var text = document.getElementById('text'); function show...
    乍暖还寒2002阅读 1,126评论 0 0

友情链接更多精彩内容