![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 52
The_Web3_社区
The Web3 是一个专注 Web3 技术解决方案设计与开发、技术教程设计与开发、Web3 项目投研分析和 Web3 项目孵化,旨在将开发者,创业者,投资者和项目方联系在一起的社区。
展开
-
MFC右键菜单的制作
void CCMenuView::OnRButtonDown(UINT nFlags, CPoint point){ // TODO: 在此添加消息处理程序代码和/或调用默认值 //创建菜单资源 CMenu menu; menu.LoadMenuW(IDR_MAINFRAME); //取出其中的一个弹出菜单项 CMenu* subMenu =...原创 2018-02-21 19:25:07 · 300 阅读 · 0 评论 -
C++11的委派构造函数
一.目的委派构造函数是C++ 11中对C++的构造函数的一项改进,其目的 也是为了减少程序员书写构造函数的时间。通过委派其他构造函数, 多构造函数的类编写将更加容易。二.委派构造函数的前因后果class Info {public: Info() : type(1), name('a'){initRest();} Info(int i) : type(i), name('a'){原创 2017-11-08 10:21:34 · 842 阅读 · 0 评论 -
Eigen矩阵运算库
最近一直在做工程上的事情,比较多的使用了Eigen矩阵运算库。简单说一下Eigen的特点:(1) 使用方便、无需预编译,调用开销小(2) 函数丰富,风格有点近似MATLAB,易上手;(3) 速度中规中矩,比opencv快,比MKL、openBLAS慢;Eigen3.3版本链接 http://eigen.tuxfamily.org/index.php?title=Main_Page注:绝大部分使用说明转载 2017-09-11 13:54:46 · 3093 阅读 · 0 评论 -
Qt两种定时器案例
### 一、头文件中的代码#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QTimer>#include <QMessageBox>#include <QObject>namespace Ui {class MainWindow;}class MainWindow : public QMain原创 2017-09-11 11:50:38 · 898 阅读 · 1 评论 -
Qt中的两种定时器的差异
Qt有两种定时器,一种是QObject类的定时器,另一种是QTimer类的定时器。(1)QObject类的定时器QObject类提供了一个基本的定时器,通过函数startTimer()来启动,通过killTimer()来结束,通过QTimerEvent来处理定时器事件。int startTimer(int interval, Qt::TimerType timerType = Qt::CoarseT转载 2017-09-11 11:45:34 · 2318 阅读 · 0 评论 -
Armadillo矩阵库的使用(二)之API接口
一、获取矩阵的某个元素通过nameMat(i,j)获取矩阵nameMat的第(i,j)个元素。 #include <iostream>#include <armadillo>using namespace arma;int main(){ mat A = randu<mat>(5, 5)*10; A.print("A = \n"); cout<<"A的第(2,3)个元转载 2017-09-09 17:19:31 · 7704 阅读 · 0 评论 -
Armadillo矩阵库的使用(一)之Armadillo的安装
一.Armadillo简介Armadillo目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多matlab的矩阵操作函数都可以找到对应,这对习惯了matlab的人来说实在是非常方便。他们之间的接口调用方式非常相似。二、Armadillo在Windows平台下的安装网上有很多VS平台下安装的播客,这里不多说,Windows下安装都比较简单。 这是我找到的一原创 2017-09-09 16:50:39 · 10711 阅读 · 1 评论 -
C++矩阵运算库推荐
Armadillo:C++下的Matlab替代品地址:http://arma.sourceforge.net/许可证:MPL 2.0目前使用比较广的C++矩阵运算库之一,是在C++下使用Matlab方式操作矩阵很好的选择,许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Arm转载 2017-08-31 16:02:51 · 625 阅读 · 0 评论 -
扫描一个多列的文件,将每一列扫描到一个结构体变量中
一.文件的内容 a.txt 16 172 1001171005 12 0 260 17 8 17 11 15 34 500 43.432743 0.229601 0.000000 -2001 269 140 -13 25 14 58 100 0 1502939736 83020 0.000000 4 BS1001171009 38220872 BS1001171008 38220310 BS1原创 2017-09-07 10:11:49 · 303 阅读 · 0 评论 -
C++ 编译时 写入/tmp/xxx时出错,设备上没有空间,编译中断
一、问题描述C++ 编译时 写入/tmp/xxx时出错,设备上没有空间,编译中断。其实遇到这个问题的不只我一个人,浏览过网上的博客和帖子,很多人都遇到了这个问题,提出的解决方案也挺一致的。基本上是在什么目录下建一个tmp目录,然后指定输出。类似下面这个mkdir /home/user/tmp export TMPDIR=/home/user/tmp 其实出现这个问题,是原创 2017-07-22 12:39:36 · 4851 阅读 · 0 评论 -
C++ 11的继承构造函数
一.概述C++是面向对象的基石,类具有可派生性。派生类可以自动获得基类的成员变量和接口,不过基类的非虚函数则无法再被派生类使用了。如果派生类要使用基类的构造函数,通常需要在构造函数中显示声明。例如:struct A{ A(int i){} };struct B : A { B(int i) : A(i) {}};B派生于A,B又在构造函数中调用A的构造函数,从而完成了构造原创 2017-11-08 12:01:40 · 4140 阅读 · 1 评论 -
armadillo库小案例
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <armadillo>using namespace std;using namespace arma;typedef struct _coor_fin{ double x; double y;}coo原创 2017-11-06 11:20:49 · 685 阅读 · 1 评论 -
Eigen库小案例
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <iostream>#include "Eigen/Eigen"using namespace std;using namespace Eigen;typedef struct _coor_fin{ double x; double y;}co原创 2017-11-06 11:22:48 · 318 阅读 · 0 评论 -
MFC菜单更新机制
如上图所示,创建菜单test,二级菜单hello和haha// CMainFrame 消息处理程序void CMainFrame::OnUpdateTestHello(CCmdUI *pCmdUI){ // TODO: 在此添加命令更新用户界面处理程序代码 if (m_flag) { pCmdUI->SetText(_T("我不能使用")...原创 2018-02-21 18:49:37 · 629 阅读 · 0 评论 -
MFC中的菜单的移除与加载
//移除菜单栏SetMenu(NULL);//重新加载菜单CMenu menu;menu.LoadMenuIndirectW(IDR_MAINFRAME);SetMenu(&menu);menu.Detach();原创 2018-02-21 18:18:09 · 1399 阅读 · 0 评论 -
QT子线程画图
1.业务类MyWork.h#ifndef MYWORK_H#define MYWORK_H#include #include class MyWork : public QObject{ Q_OBJECTpublic: explicit MyWork(QObject *parent = 0); // 添加画图函数 void drawIma原创 2018-02-06 22:35:17 · 4609 阅读 · 6 评论 -
QT线程的两种使用方式
一、第一种方式1.线程类的封装MyThead.h#ifndef MYTHREAD_H#define MYTHREAD_H#include class MyThread : public QThread{ Q_OBJECTpublic: explicit MyThread(QObject *parent = 0);signals: voi原创 2018-02-06 22:16:15 · 696 阅读 · 0 评论 -
基于mvc模式的应用框架之struts(二)
一、Action类的三种写法1.既不继承也不实现,普通方法代码:public class UserAction { private String userName; public void setUserName(String userName) { this.userName = userName; } public String logi原创 2017-12-16 20:07:56 · 266 阅读 · 0 评论 -
QT中基于QScrollArea封装一个能够动态产生控件的类
1.头文件#ifndef BASEUI_H#define BASEUI_H#include <QString>#include <QPushButton>#include <QLabel>#include <QLineEdit>#include <QWidget>#include <QFrame>#include <QObject>#include <QTableWidget>#i原创 2017-11-27 15:14:47 · 1063 阅读 · 0 评论 -
QT中在QFrame中动态产生控件
void MainWindow::start(){ for(int i=0; i < 1000; i++) { QFrame *f = new QFrame(); QLineEdit *a=new QLineEdit(f); ui->verticalLayout_7->addWidget(f); b->setText(Q原创 2017-11-27 10:07:29 · 7436 阅读 · 0 评论 -
qt 获取动态生成的qlineedit值
1.头文件代码#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <QSettings>#include <QString>#include <QPushButton>#include <QLabel>#include <QLineEdit>#include <QWidget>#include原创 2017-11-30 19:13:59 · 3643 阅读 · 0 评论 -
QT动态生成界面控件工厂类
#ifndef BASEUI_H#define BASEUI_H#include <QString>#include <QPushButton>#include <QLabel>#include <QLineEdit>#include <QWidget>#include <QFrame>#include <QObject>#include <QTableWidget>#includ原创 2017-11-30 16:38:18 · 2847 阅读 · 0 评论 -
有关使用cJSON包解析或者创建JSON时遇到的错误和解决办法
一、undefined reference/tmp/cc7DP8ZD.o: In function `parse_number':cJSON.c:(.text+0x48f): undefined reference to `pow'/tmp/cc7DP8ZD.o: In function `print_number':cJSON.c:(.text+0x5b4): undefined refer原创 2017-06-22 00:20:44 · 6017 阅读 · 0 评论 -
Vitual在继承中修饰成员函数
代码:#include <iostream>using namespace std;class A{public: virtual void print() { cout << "A::print" << endl; } ~A() { cout << "xiegouA" << endl; }};class B原创 2017-06-01 18:01:24 · 308 阅读 · 0 评论 -
C++类定义对构造和析构的调用的区别
一.代码class Base{public: Base() { cout << "Base" << endl; } ~Base() { cout << "~Base" << endl; }private: char str[100];};void main(){ cout << "..sss.."原创 2017-06-01 17:57:15 · 288 阅读 · 0 评论 -
Boost库的timer类讲解
一、概述一直以来,C++对时间的处理都不是很理想,而且时间和日期在工作中又是我们经常遇到的,故而我们只能求助于C语言的笨拙的函数。而boost库却完美地使用timer,date_time和chrono解决了这个问题。本文我们只介绍timer类。二、timer类的源码解析以下是boost_1_63_0版本中的timer类的去除注释、去除掉注释掉的代码的源码#ifndef BOOST_TIMER_HPP原创 2017-03-05 20:25:25 · 588 阅读 · 0 评论 -
Boost 库的构建工具
一 、概述我们都知道,Linux下有很多的C/C++的构建工具,了如make、cmake、scons等等。而boost库与Linux下的C/C++一样,也有构建工具b2,它的英文全称是boost build v2。它是专门为boost这强大库设计的工具,强大、灵活而又方便。二、构建工具简介1、b2工具的安装为了使用b2共具,我们需要安装boost程序之后再安装b2程序,进入tools目录下的buil原创 2017-03-05 20:20:22 · 1452 阅读 · 0 评论 -
C++中的解引用与智能指针
一、概述在C语言和C++中,不管我们用C语言的库函数malloc开辟了一块内存,还是用C++的操作符new出了一块内存,我们都要同过free和delete去释放内存。而对于其他高级语言来说,当我们开辟一块内存用完之后,我不用去管这块内存的释放,操作系统默认会帮我们把这块内存释放了。其实这样的机制在C++中也有,只是很少被用到而已,它就是所谓的智能指针。二、智能指针1、常规情况void foo(){原创 2017-03-08 17:22:35 · 2984 阅读 · 0 评论 -
C++中的运算符重载
一、概述所谓重载,就是从新赋予新的含义的意思。运算符重载的本质是函数重载。重载函数的一般格式如下:函数类型 operator 运算符名称(形参列表){ 重载实体;}operator 运算符 一起构成了新的函数名,例如:const Complex operator+(const Complex &c1, const Complex &c2);上面这种形式我们一般只说重载了”+”运算符原创 2017-03-08 15:36:58 · 504 阅读 · 0 评论 -
C++中被人遗忘的友元函数
一、概述在C++领域流传着这样一句话,同类对象间无私处,异类对象间有友元。 我们都知道,采用类的机制后实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,成员函数一般定义为公有的,依此提供类与外界间的通信接口。但是,有时需要定义一些函数,这 些函数不是类的一部分,但又需要频繁地访问类的数据成员,这时可以将这些函数定义为该函数的友元函数。 友元函数的形式friend 类型 函数名(形式参数);原创 2017-03-08 12:51:16 · 360 阅读 · 0 评论 -
Boost库的简介与安装
一、boost库简介boost库是一个功能强大,构造精巧,跨平台的免费的C++开源库。它使得C++编程更优雅、更有活力、更高产,C++11的标准有三分之二来自boost库。在boost1.57版本时,就一共包含了129个组件,分为25个大类,涵盖了文本处理,容器,迭代器,算法,图像处理,模板元编程,并发编程等许多领域。二、boost库的安装1、boost库的获取方式可以从boost官网上下载,网址是原创 2017-03-03 21:26:15 · 12424 阅读 · 0 评论 -
细说C++中构造函数
一、构造函数的定义与形式C++中定义的与类名相同的成员函数,这种成员函数就叫做构造函数。普通构造函数:class 类名{ 类名(形参) { 函数的函数体 }};//案例class A(){public: A(int a) { this.a = a; }private: int a;};拷贝构造函原创 2017-03-02 10:47:03 · 396 阅读 · 0 评论 -
面试官最喜欢考的设计模式---单例设计模式
一、讲在前面的废话笔者曾经多次面试都遇到了这个问题,请你说一下软件的设计模式,一般我们都会把23种模式例举几个出来,如果没有说错,你一定会列举单例设计模式,这样的话你就中了面试官的圈套了。接下来的一般情况就是让你细说单例设计模式,然后写代码。二、单例设计模式概述单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外原创 2017-03-01 21:15:02 · 1016 阅读 · 0 评论 -
C++中最容易被人忘记的构造函数初始化列表
需要用构造函数初始化列表1、 初始化的数据成员是对象2、类的成员变量被const修饰3 、需要初始化引用成员数据不需要初始化的有1、 指针2.、static 标记的,static const 也不需初始化列表中static属于类并不属于具体的对象,所以 static成员是不允许在类内初始化的。初始化的数据成员是对象相关案例类中的对象的初始化顺序 跟初始化列表无关, 而跟对象的定义顺序有关 cl原创 2017-03-01 06:41:14 · 213 阅读 · 0 评论 -
浅谈C++中的泛型编程
一、概述泛型(Generic Programming)即是指具有在多种数据类型上皆可操作的含 意。所谓泛型编程,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。上面所叙述的是函数模板,实际上模板分为函数模板和类模板。类模板与函数模板的定义和使用类似,有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,所以将类中的类型进行泛化。二、原创 2017-03-09 11:07:04 · 373 阅读 · 0 评论 -
C++中的类型转换
一、概述笔者曾经面试的时候遇到一个问题,在C++怎么改变const修饰的常量的值,当时我还想了一会,C语言的const修饰的常量是假常量,是可以通过指针修改的,而C++中的常量那可是一个真的常量,怎么修改呢!后来我想到了类型转换const_cast 去掉const属性转换。其实这道题我也不知道做对了没,回来也没有上网查过资料,借用一句话描述一下我这种性格吧,“不要和我比懒,我懒得和你比”。好了,废话原创 2017-03-09 11:47:34 · 325 阅读 · 0 评论 -
Boost库的progress_timer和progress_display讲解
一、概述progress_timer和progress_display这两个类定义在文件progress.hpp。progress_timer是继承自timer的一个定时器,progress_timer的行为类似timer函数,只是progress_timer的析构函数在适当的地方以正确的形式展示一条消逝的时间信息。也就是说,该函数会在析构时自动输出时间。progress_display在适当的地方原创 2017-03-07 11:43:35 · 846 阅读 · 0 评论 -
QT的元对象机制
一.QT的元对象系统QT的元对象系统提供提供了两个关键服务:信号/槽、运行时的类型信息和动态属性系统(内省机制)。内省机制对于实现信号和槽是必须的,并且允许应用程序员在程序运行时获得“元信息”(包括被对象支持的信号和槽的列表,以及这些信号/槽所在的类的名称)。内省机制同时支持“道具”(对于QtDesigner)和文本翻译(国际化),它还是Qt应用程序脚本(Qt Script for Applicat转载 2017-06-01 07:01:35 · 614 阅读 · 0 评论 -
编译过程,make,makefile,cmake,qmake,cmakelist总结
一、关于C语言的编译过程预编译编译链接1.-E预编译gcc –E 参数代表预编译 gcc -o a1.c -E a.c 预编译a.c,预编译之后的文件名叫a1.c 预编译功能之一:将#include包含的头文件做简单的文本替换 在C语言中#开头的语句又叫预编译指令 预编译功能之二:将代码中的注释删除2.-c编译编译的作用是把文本的c语言编译为二进制的指令 gcc -o a.o -c原创 2017-06-01 06:39:55 · 1661 阅读 · 0 评论 -
关于QT中的工程文件.pro的介绍
一.Pro文件原型代码QT += core gui networkgreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = udpTEMPLATE = appSOURCES += main.cpp\ udp1.cpp \ udp2.cpp \ mybutton.cppHEADERS += udp1.h原创 2017-06-01 05:57:23 · 1022 阅读 · 0 评论