大家好,我是苏貝,本篇博客带大家了解C++的容器array+类的按需实例化,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️
1. 容器array
容器array和我们自己写的a2都是静态数组,容器array有什么意义吗?
我们用C语言写的数组,对越界读检查不出来。对越界写是抽查,很多位置都检查不出来
但容器array的对象,对任意越界读写都能检查出来
看到这里,你是不是觉得array还是蛮好用的?可是,它能做到的vector都能做到。array能检查任意越界读写,vector也可以。vector还能初始化,array不行。array可能会栈溢出,但vector一般不会(因为array开辟的空间在栈上,栈的大小要小于堆的大小)
2. 类的按需实例化
看下图:size()没有参数,但是在operator[ ]中给size传了一个参数,应该要报错的
但是都没有报错
只有在调用operator[ ]时才会报错
只有在调用operator[ ]时才会报错的原因:类在实例化的时候,会按需实例化(调用哪个成员函数就实例化哪一个)。当没有调用operator[ ]时,编译器不会对它的内容进行很细致的检查,所以就检查不出来。只有调用operator[ ],才会实例化operator[ ],编译器才会细致的检查,因此能检查出来。
好了,那么本篇博客就到此结束了,如果你觉得本篇博客对你有些帮助,可以给个大大的赞👍吗,感谢看到这里,我们下篇博客见❤️