- 博客(16)
- 资源 (1)
- 收藏
- 关注
原创 c++左值与右值
如果需要使用右值引用绑定左值,则可以通过std::move,它可以将类型转换右值从而使参数可以被移动,转换为可移动状态之后,具体的移动操作则是由对应的“移动构造函数”,“移动赋值运算符”完成。结论:非常量右值可以引用非常量右值,无法引用常量左值和非常量左值,常量右值(不被c++标准允许,但是在msvc编译器上可以编译通过,但是后续可能会引发其他问题)。结论:常量右值可以引用常量右值和非常量右值,无法引用常量左值和非常量左值。结论:常量左值可以引用非常量左值,常量左值,非常量右值,常量右值。
2025-01-24 17:02:02
256
原创 c++程序执行过程
将程序转换为机器代码的过程,由编译器(g++,msvc)完成编译,将经过预处理的代码源文件转换为(.o,.obj)文件,编译将生成目标文件,但是还无法执行。(2)头文件包展开:处理(#include)指令,将包含的头文件内容插入到源码中。(3)条件编译:处理(#ifdef,#else,#endif等)条件编译指令。(5)生成目标文件:汇编器将汇编代码转为二进制目标文件(.o 或 .obj)。(3)静态库链接:将目标文件与静态库(如 .lib 或 .a 文件)结合。(3)代码生成:将源代码翻译为汇编代码。
2025-01-03 16:33:59
298
原创 c++11using,typedef,define,const用法和区别
define和const都是定义一个常量在后续的代码中使用,但是他们又有本质的区别,具体如下。
2025-01-03 15:33:42
388
原创 工厂方法模式学习记录
1,工厂方法模式介绍**工厂方法模式定义:在工厂模式中,工厂父类负责定义创建产品对象的公告接口,而工厂子类负责生成具体的产品对象。目的是将产品的实例化操作延迟到工厂子类中完成,通过工厂子类来确定究竟应该实例化哪一个具体产品类。**模式结构----每一个工厂子类负责生产一类具体的产品。2,工厂模式的优缺点简单工厂模式中最大的缺点是当有新产品要加入系统时,必须要修改工厂类,加入必要的处理逻辑,违背了“开放封闭原则”,在工厂方法模式中对这点进行了优化。优点:系统的扩展性好,符合“开放封闭原则” 。
2022-05-23 22:13:06
148
原创 Qt获取时间记录
//设置写入对象QDateTime currentTime = QDateTime::currentDateTime();//ddd显示周几QString str = currentTime.toString("yyyy.MM.dd hh:mm:ss /*ddd*/");//QTime获取时间QTime currentTime2 = QTime::currentTime();int hour = currentTime2.hour(); int minute = currentTime2.
2022-05-23 20:15:42
466
原创 c++多态的理解
** 多态性是一个接口多种实现,是面向对象的核心**正常情况下,函数的地址在编译过程中就已经确定,在运行中无法更改,但是通过晚绑定机制可以在运行阶段在确定函数的地址,从而实现多态的效果。#include <iostream>using namespace std;class Animal{public: /*virtual*/ void CreateAnimal(); /*virtual void Sound();*/};void Animal::Crea
2022-05-16 23:09:47
327
原创 简单工厂模式学习记录
工厂模式(Factory Pattern )是最常用的一类创建型设计模式,包含简单工厂模式(Simple Factory Pattern),工厂方法模式(Factory Method Pattern),和抽象工厂模式(Abstract Factory Pattern)。简单工厂模式(Simple Factory Pattern):定义一个工厂类,它可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类。因为在简单工厂模式中用于创建实例的方法是静态方法,因此简单工厂模式又称为静态工厂方法模式(
2022-05-13 22:47:04
190
原创 Qt中添加鼠标右键菜单
#include "RightButton.h"#include <QMenu>#include <QAction>#ifdef WIN32 #pragma execution_character_set("utf-8") #endifRightButton::RightButton(QWidget *parent) : QWidget(parent){ ui.setupUi(this); this->setCont
2022-05-13 21:12:49
1756
原创 记录TableWidget
QtableWidget提供的方法QtableWidget::QtableWidget(QWidget *parent) : QMainWindow(parent){ ui.setupUi(this); InitWidget();}void QtableWidget::InitWidget(){ QStringList _list; _list << "姓名" << "年龄" << "身高" << "体重";
2022-05-13 16:43:13
520
原创 观察者模式学习
设计模式之观察者模式(c++)Observer 模式要解决的问题为: 建立一个一( Subject)对多( Observer) 的依赖关系, 并且做到当“一” 变化的时候, 依赖这个“一”的多也能够同步改变。在GOF的《设计模式:可复用面向对象软件的基础》一书中对观察者模式是这样说的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当一个对象发生了变化,关注它的对象就会得到通知;这种交互也称为发布-订阅(publish-subscribe)。目标是
2022-05-12 23:41:16
194
原创 模板模式学习
示例:使用模板方法和不使用的区别,还有在什么情况下适用模板方法。//组件协作模式,通过晚绑定,实现框架之间的松耦合//1,TemplateMethod//2.Strategy//3,Observer/Event//动机:// 在软件的构建过程中,对于某一项任务,他常常具有稳定的整体结构,但各个子步骤之间却有很多改变的需求,//或者由于某些原因(比如框架和应用之间的关系),而无法和任务的整体结构同时实现// 那么如何在确定稳定操作结构的前提下,来灵活应对各个子步骤的变化或者晚期的
2022-04-16 15:22:27
224
原创 tuf8和gb2312编码转换
#include <qtextcodec.h>#include 构造函数{ui.setupUi(this);std::string temp("模板方法");char str[10] = {0};setWindowTitle(TemplateMethod::Gb2312_utf8(temp, str));}char * TemplateMethod::Gb2312_utf8(std::string strutf8, char* str){//头文件QTextCod
2022-03-30 23:39:07
1990
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人