![](https://img-blog.csdnimg.cn/20190715144233724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++ prime plus
文章平均质量分 54
C++新特性介绍
willinux
github地址:https://github.com/stephenix
展开
-
vector保存局部变量和指向局部变量的指针区别
一、结论vector保存局部变量:可以,因为在vector上创建对象也是在堆上;vector保存指向局部变量的指针:不可以,因为局部变量离开作用域后,就会释放,指向局部变量的指针会指向未知的地址空间,指向的内容未知。demo1:验证vector即使局部变量也是堆上上分配。结果:返回的vector中保存的局部变量地址没有变化。#include <iostream>#include <vector>using namespace std;// 返回一个vector变量,原创 2021-01-18 17:59:59 · 1416 阅读 · 0 评论 -
undefined reference to `vtable for FssHelper‘
1.编译报错:In function `~FssHelper':FssHelper.h:51: undefined reference to `vtable for FssHelper'2.查资料:(1)可能1:基类的析构函数需要有函数体。~IFssHelper() {}或者 ~IFssHelper() = default;(2)实际我已经添加了函数体,最后发现是代码里没有用到多态,没有生成vtable。生成vtable的时机是编译器发现有基类的指针指向派生类,才会去真正创建vtable原创 2020-07-29 14:51:50 · 147 阅读 · 0 评论 -
error: ‘virtual void xxx const‘ was hidden [-Werror=overloaded-virtual]
从错误信息提示看,是虚函数被隐藏,所以报错。1.为什么会出现这种错误?(1)先理解重载和重写(覆盖)的区别:重载:函数名相同,函数参数不同,和返回类型无关;重写(覆盖):函数名相同,函数参数相同,多用在实现函数的多态;(2)这种报错,多是基类定义的虚函数被子类隐藏,子类定义了同名函数,但方法参数不同造成2.-Werror=overloaded-virtual这是编译选项,-Werror=overloaded-virtual:是报出error,W本身是warning,error是把warnin原创 2020-07-14 21:05:29 · 2208 阅读 · 0 评论