自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 问答 (1)
  • 收藏
  • 关注

转载 链接时报错:undefined reference to vtable 原因以及解决办法

链接时报错:undefined reference to vtable 原因以及解决办法

2022-09-02 17:59:03 1778 2

转载 关于 warning: comparison between pointer and integer

http://www.voidcn.com/article/p-eaedhhlx-hc.html当是BYTE类型 ,可以用NULL,当是Char类型,要用‘/0’或者0,要不然会出警告

2021-06-30 10:37:04 7308

原创 typedef

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-06-21 16:12:36 158

翻译 SQLite学习

sqllte3有五种基本类型,sqlite3会把其他数据类型转换成以下5类基本数据类型。1.null,blob?转化为NULL类型。2.integer类型转换为INTEGER类型。3.real?double和float类型转换为REAL类型。4.char,clob?test和varchar类型转换为TEXTl类型。5.其余数据类型都转换为NUMERIC类型。实例:新建一个数据库:sqlite3 test.db如果数据库test.db已经存在,则命令就会在当前目录下打开test

2021-06-01 15:35:39 344

原创 printf(%02hhx)

1.hh :表示以一个char类型一个字节打印2.h :表示以一个short类型两个字节打印data :12345678printf("%02hhx,%02hx,%02x\n",data,data,data);结果:78,5678,12345678tip:只读取两位,如果超过两位如实打印,如果不够两位,将补0.%x 是以十六进制打印一个整数(4个字节)例如:char a = '\xAB';printf("%02X", a); //FF FF FF A...

2021-05-25 13:55:36 2263

翻译 QT学习:布局管理

1.基本布置管理器-水平布局,垂直布局。2.栅格布局管理器3.表单布局管理器从部件栏中找到Form Layout,将其拖入到界面中,然后双击或者在它上面右击,选择“添加窗体布局行“菜单。4.可扩展窗口一般情况下button为触发方式默认为trigger,只有设置为checkable的时候,触发为toggled,默认checkable是不选中的,button默认为触发按钮(trigger button),按下去马上弹起来。选中checkable后,button变成切换按钮(toggle),

2021-05-11 14:57:23 182

翻译 QT学习:QFrame类族

QFrame类是带有边框的部件的基类,它的子类有最为常用的标签部件QLabel,另外还有QLCDNumber,QSplitter,QStackedWidget,QToolBox和QAbstractScrollArea类,QAbstractScrollArea类所有带有滚动区域的部件类的抽象基类,这里需要说明的是在QT中带有Abstract字样的类都是抽象基类。带边框部件最主要的特点就是可以有一个明显的边界框架。QFrame类的主要功能也就是用来实现不同的边框效果,lineWidth是边框边界的线得宽度,

2021-05-11 10:22:51 1367

转载 pthread_detach()函数

创建一个线程默认的状态是joinable.如果一个线程结束运行但没有被join,则还有一部分资源没有被回收。所以创建线程者应该调用pthread_join来等待线程运行结束(功能并不是结束线程),并可得到线程的退出代码。回收其资源。但是调用pthread_join(pthread_id)后,如果该线程没有运行结束。调用者会被阻塞,在有些情况下我们并不希望如此。比如在Web服务器重当主线程为每个新来的链接创建一个子线程进行处理的时候,主线程并不希望因为调用pthread_join而阻塞(因为还

2021-05-08 11:47:52 441

转载 ftok函数()

ftok函数的作用问:很多操作IPC,例如消息队列,共享内存等的时候,常常的key并不是直接写死的,而是用ftok返回的键值作为IPC键值,请问这样做有什么好处吗?直接写死,或者写到配置文件中不是也一样吗?答:ftok的第一个参数是一个文件的路径名称.一般在应用系统中,使用$HOME或者应用系统的根目录作为它的值.这样产生的key_t就不会与系统中其他的软件和系统的相同了,从而避免造成冲突. (当以文件为第一个参数时,如果文件的大小发生变化,生成的Key也会响应变化,应注意 )如果,你使用配制文件,

2021-04-27 16:04:40 339

原创 QT学习:错误信息对话框

#incldue<QErrorMessage>QErrorMessage *dialog = new QErrorMessage(this); dialog->setWindowTitle("错误信息对话框"); dialog->showMessage("这里是出错信息!");这里新建一个QErrorMessage对话框,并且调用它的showMessage()函数来显示错误信息,调用这个函数时对话框会以非模态得形式显示出来。...

2021-04-16 17:42:43 1983

原创 QT学习:进度对话框

添加#include<QProgressDialog>void MyWidget::on_pushButton_6_clicked(){ QProgressDialog dialog(tr("文件复制进度"),tr("取消"),0,50000,this); dialog.setWindowTitle("进度对话框"); //标题 dialog.setWindowModality(Qt::WindowModal); //将对话框设置为模态 dia...

2021-04-16 16:36:17 554

原创 QT学习:消息对话框

添加#incldue<QMEssageBox>void MyWidget::on_pushButton_3_clicked(){ //问题对话框int ret1 = QMessageBox::question(this,tr("问题对话框"),tr("你了解Qt吗?"),QMessageBox::Yes,QMessageBox::No);if(ret1 == QMessageBox::Yes)qDebug()<<tr("问题!");//提事对话框int ret2.

2021-04-16 16:04:22 69

原创 QT学习:输入对话框

添加#include<QInputDialog>void MyWidget::on_pushButton_clicked(){ bool ok; //获取字符串 QString string =QInputDialog::getText(this,tr("输入字符串对话框"),tr("请输入用户 名:"),QLineEdit::Normal,tr("admin"),&ok); if(ok) qDebug()<<"str...

2021-04-16 13:29:05 1229

原创 QT学习:字体对话框

添加#include<QFontDialog>头文件void MyWidget::on_pushButton_3_clicked(){ //ok用于标记是否单击了Ok按钮。然后获得选择的字体 bool ok; QFont font = QFontDialog::getFont(&ok,this); //如果单击OK按钮,那么让“字体对话框”使用新字体 if(ok) ui...

2021-04-16 11:49:52 222

原创 QT学习:颜色对话框

首先新建Qt Gui应用,打开.ui文件,添加按钮。然后进入”颜色对话框“按钮的clicked()单击信号槽。更改如下:void MyWidget::on_pushButton_clicked(){ QColor color = QColorDialog::getColor(Qt::red,this,tr("颜色对话框")); qDebug()<<"color:"<<color;}这里使用了QColorD...

2021-04-15 17:32:33 960

原创 QT学习:多窗口切换

在QT中使用信号和槽机制来完成对象之间的协同操作。简单地说,信号和槽都是函数,比如单机窗口上的一个按钮想要弹出一个对话框那必须将整个按钮的单击信号和定义的槽关联起来。第一步双击.ui文件,在设计模式中添加一个label(我是主界面) 和push button(显示子窗口),第二步打开MyWIdget类声明写上槽声明: public slots: void showChildDialog();这里自定义了一个槽,槽必须声明为slots,这里使用了public...

2021-04-14 17:52:13 948

原创 QT学习:forward declaration of class Ui::MyWidge的解决

每当你新建一个QT设计界面,QT会自动生成对应的yyy.ui文件。观察.ui文件,注意name = "Form",默认都是整个名字。但是具体会按照你创建时改变。当你在你的头文件中引用此界面时,创建一个命名空间如namespace Ui{class xxx;}这里的XXX应与.ui文的中的name必须保持一致,否则就会导致如标题一样的错误。...

2021-04-14 16:46:37 1966

原创 QT学习:模态和非模态对话框

#include "mywidget.h"#include "ui_mywidget.h"#include <QDialog>MyWidget::MyWidget(QWidget *parent) :QWidget(parent),ui(new Ui::MyWidget){ui->setupUi(this);QDialog dialog(this);dialog.show();QDialog dialog2(this);dialog2.exec();}MyWi..

2021-04-13 18:01:55 372

原创 QT学习:窗口与子部件

Qt Creator提供默认基类只有QMain Window,QWidget和QDialog这三种。QMainWindow是带有菜单栏和工具栏的主窗口类QDialog是各种对话框的基类,而它们全部继承自QWidget.#include <QtGui>#include <QtWidgets>int main(int argc,char *argv[]){ QApplication a(argc,argv); //在代码中可以使用中文字符串//新建...

2021-04-13 15:16:29 219

原创 QT学习:4.用命令行编译ui文件和程序

1.第一步创建目录,复制hellodialog.ui和main.cpp文件。2.第二部编译.ui文件。打开Command Prompt,然后进去该目录,使用命令绝对路径\uic -o ui_hellodialog.h hellodialog.ui3.第三步:绝对路径\qmake -project绝对路径\qmake绝对路径\makecd debug.exe...

2021-04-07 17:10:18 1220

原创 QT学习:3.命令行编译程序

1.第一步在Command Prompt中对含有main.cpp文件的目录使用qmake -project命令来 生成pro工程文件。若显示qmake不是内部或外部命令,也不是可运行的程序。一般问题都是需要添加绝对路径。>D:\QT\5.0.2\mingw47-32\bin\qmake -project2.第二步使用qmake命令来生成用于编译Makefile文件。这时在目录中出现了Makefile文件和debug和release目录。3.第三步使用make命令(D:\QT\Tools

2021-04-07 15:06:07 286

原创 QT学习:2.纯代码编写程序

#include <QApplication>#include<QDialog>#include<QLabel>int main(int argc,char *argv[]){ QApplication a(argc,argv[]); QDialog w; w.resize(400,300); QLabel.label(&w); label.move(120,120); lab...

2021-04-07 13:23:38 244

原创 QT学习:1.exe添加图标

1.创建.ico文件,然后添加在工程目录中,命名为myico.ico。2.创建文本文档,并输入一行代码:IDI_ICON1 ICON DISCARDABLE “myico.ico"然后另存为myico.rc保存。3.修改项目文件 Qt Creator中的编辑模式双击.pro文件,在最后一行添加一行代码RC_FILE +=myico.rc...

2021-04-07 11:15:08 123

翻译 条款37:绝不重新定义继承而来的缺省参数值

静态绑定:就是在调用之前,以及定义好。取决静态类型?动态绑定:调用一个虚函数时,究竟调用哪一份函数实现代码,取决于发出调用的那个对象的动态类型。静态类型:就是它在程序中被声明所采用的类型。动态类型:目前所指对象的类型。一个对象有静态类型和动态类型,两者并不冲突。class Shape{public: enum ShapeColor{ Red ,Green ,Blue}; virtual void draw (ShapeColor color = Red) c...

2021-02-26 16:24:33 104

翻译 条款36:绝不重新定义继承而来的non_virtual函数

class B {public: void mf(); ....};class D : public B{ ....};D x;----------B* pB =&x;pB->mf();--------D *pD =&x;pD->mf();两次调用都会调用指针类型对应的版本,而不是根据对象是哪种类型决定。1:非虚函数比如B::mf和D::mf都是静态绑定。意思是由于pB被声明一个指向B的指针,通...

2021-02-26 11:39:21 98

翻译 条款34:区分接口继承和实现继承

1.声明一个纯虚函数得目的是为了让子类只继承函数接口。2.声明一个虚函数得目的是让子类继承该函数得接口和缺省实现。3.声明非虚函数得目的是为了令子类继承函数的接口及一份强制性实现。...

2021-02-25 16:04:42 60

翻译 条款33:避免遮掩继承而来的名称

当位于一个子类成员函数内指涉父类内的某物时,编译器可以找出我们所指涉的东西,意味子类继承了声明于父类内的所有东西。实际运作方式是:子类的作用域被嵌套在父类的作用域中,但在子类找不到定义时,作用域替换为父类的作用域。class Base{private:int x;public: virtual void mf1() =0; virtual void mf1(int); virtual void mf2(); void mf3();...

2021-02-25 15:20:44 55

翻译 条款31:将文件间的编译依存关系降至最低

#include <string>#include "date.h"#include "address.h"class Person{std::string name() const;std::string birthDate() const;std::string address() const;}如果程序这样写的话,Person定义文件和其他含入文件之间形成了一种编译依存关系。如果这些头文件有任何一个被改变,或者这些头文件所依赖的其他头文件发生改变,那么每一个

2021-02-25 11:00:34 109

翻译 条款30:透切了解inlining的里里外外

inlining函数背后的整体观念就是将:对此函数的每一个调用,都以函数本体替换之。如果inline函数的本体很小,编译器针对“函数本体”所产生的代码可能比针对“函数调用”所产生的代码更小。inline只是对编译器的一个申请,而不是强制命令。这项申请可以隐形提出,也可以明确提出。在class类定义理的函数都是隐形inline申明。明确申明inline函数的做法则是在其定义式前加上关键字inline。对Virtual函数声明inline声明失败!因为virtual函数意味着“等待”,等到运

2021-02-24 17:56:57 79

转载 串口通信中ReadFile和WriteFile的超时详解!

https://www.cnblogs.com/LittleTiger/p/4390219.html

2021-02-02 15:34:54 763

原创 头文件

最好不要笑嘻嘻的在头文件里定义什么东西。比如全局变量!:#ifndef _xx _头文件.H#define _xx_头文件.Hint A;#endif这里的int A 是个全局变量的定义,所以如果这个头文件被多处引用的话,你的A会被重复定义,显然是语法上错误了,只不过有了这个#ifndef的条件编译,所以能保证你的头文件只被引用一次。但如果多个c文件包含这个头文件时还是会出错的,因为宏名有效范围仅限于c源文件,所以在多个C文件编译时是不会出错的,但是在链接时就会报错,说你多处定义了同

2020-12-31 16:58:21 34

原创 SQL的LOOP循环

1LOOP的简单循环语法:LOOP要执行的语句;EXIT WHEN<条件语句> //条件满足,退出循环语句END LOOP;例子:DECLARE M NUMBER :=1;BEGINLOOPM :=M+1;DBMS_OUTPUT.PUT_LINE('M的当前值为:'M');EXIT WHEN M =10;END LOOP;END;2WHILE循环语法:WHILE<进入循环的条件>LOOP...

2020-12-23 16:42:29 9055

原创 SQL 中的DECLARE 和DEFAULT 和SET

在IF中如果我们定义一个变量的话他的作用直到IF结束为止,IF外是不识别这个变量,else都不能使用IF(true){ int32 i =1;Console.WriteLine(I);}这种情况要是在SQL里就要使用DECLARE了BEGIN DECLARE @test VARCHAR;如果要使用默认值: DECLARE @test VARCHAR(5) DEFAULT 'a';进行赋值:DECLARE Var1 INTEGER ...

2020-12-23 14:24:19 2844

翻译 条款29:为“异常安全”而努力是值得的

class PrettyMenu{ public: ... void changeBackground (std::istream & imgSrc); ... private: Mutex mutex; Image* bgImage; int ImageChanges;};void pret...

2020-12-10 16:47:02 149

翻译 条款28:避免返回handles指向对象内部成分

class Rectangle{ public: ... point & upperLeft()const { return pData->ulhc;} point & lowerRight() const { return pData->lrhc;} ...};这样的设计可通过编译,但却是错误的,实际上它是自我矛盾的。一方面upperLeft和lowerRight 被声明为const成员函数,...

2020-12-10 14:00:19 105

翻译 条款27:尽量少做转型动作

C++四种新式转型const_cast<T>(expression)通常用来将对象的常量性转除,将const转成non_const;dynamic_cast<T>(expression)用来执行“安全向下转型”通过父类访问子类reinterpret_cast<T>(expression)很少用到,忽略static_cast<T>(expression)用来强迫隐式转换,例如将non_const对象转为const对象,或将int转

2020-12-10 11:30:33 71

翻译 条款26:尽可能延后变量定义的出现时间

只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流到达这个变量定义时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并未被使用,仍需耗费这些成本,所以你应该尽可能避免这种情形。std::string encryptPassword(const std:;string & password){ using namespace std; string encrypted;...

2020-12-09 10:30:34 59

原创 printf()函数不能直接输出string 类型

因为string不是c语言的内置数据,所以直接printf输出string类型的是办不到的例如printf("%s\n",a.c_str());

2020-12-09 09:15:50 299

原创 extern声明变量

1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。extern只是声明,必须在其他文件重新定义。...

2020-12-03 11:19:24 346

翻译 条款25:考虑写出一个不抛出异常的swap函数

缺省情况下swap动作可由标准程序库提供的swap算法完成。namespace std{ template <typename T> void swap (T& a, T& b) { T temp(a); a=b; b= temp; }}但是使用默认额swap效率非常低,例如:class ...

2020-11-05 16:08:20 96

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除