- 博客(4)
- 收藏
- 关注
原创 C++11中function,lambda, bind之间的关系(八股三)
lambda本质是外部变量将转变为类的成员变量,在编译的时候,将lambda表达式转变为一个函数对象。动态绑定,只需修改该对象(赋值不同的function对象),实现类似多态的效果。用途:1、保存普通函数,类的静态成员函数。3、保存类成员函数4、保存lambda表达式5、保存bind返回的函数对象。仿函数(函数对象):重载了操作符()的类,可以有状态,通过成员变量进行存储状态。:通过绑定函数以及函数参数的方式生成函数对象的模板函数。bind也是用来生成函数对象(函数和参数进行绑定生成函数对象);
2025-02-24 23:32:15
232
原创 如何解决菱形继承(八股二)
如何解决:1、虚继承,子类会指向同一个虚表,然后通过虚表的偏移量反向查找父类地址。父类的vptr都有共同的基类偏移量,从而让子类多继承时指向同一个父类的父类。菱形继承是因为C++独有的多重继承的特性,一个字类可以继承自多个父类,这些父类可能继承自其他父类。g++ -fdump-class-hierarchy *.cpp gcc8.0之前。g++ -fdump-lang-class *.cpp gcc8.0之后。菱形继承存在浪费存储空间,造成二义性的问题。
2025-02-20 22:06:25
192
原创 C++中面向对象三大特征(八股一)
虚函数重写:在基类的函数前加上virtual关键字,在派生类重写该函数,运行时会根据对象的类型来调用对应的函数。 晚绑定:若使用virtual函数,则会为类生成虚表(一维数组,存放虚函数地址),类对象构造时会初始 化该虚函数表指针。1、静态多态:函数重载,编译器确定,允许在同一作用域中声明多个功能类似的同名函数(参数个数或者类型或者参数顺序不一样导致不同形态)注意:不能通过返回值类型来区别重载。接口继承:一个接口从另一个接口派生,继承其方法签名,从而形成新的接口。
2025-02-20 20:55:24
246
原创 Qt5版本添加至vs2022
由于我发现在vs2022将Qt项目中打开需要添加Qt Visual Studio Tools插件以及msvc2019或2017。所以我安装了Qt官网的在线安装器,但是安装器中全是6版本以上的。经过不断搜索,发现Qt5.14版本可以添加msvc2017。但是这个版本的Qt Creator是基于5.14版本开发的4.11.1版本,ai说不影响打开5版本开发的项目。这个网站下载了此版本,然后傻瓜安装,勾选选项如图所示。然后在vs中添加类似。然后添加成功,还有会问你要不要及时更新Qt版本,我选着不要出现。
2025-02-15 12:10:17
316
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人