C++
-
前言 [title-plane title="前言"]本文介绍了 VScode + mingw-w64 配置 C/C++ 开发环境的步骤,整理了官方及优秀第三方的内容,对学习和工作有一定借鉴意义。[/title-plane] 配置过程 1. 安装 VsCode 下载地址:https:…
-
隐藏标题栏 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::FramelessWindowHint); [c-alert type="info"]两个函数都可以去掉标题栏,区别是第一个可以鼠标缩放窗口, 第二个不可以[/c-alert] 隐藏标题栏、任务栏显示、窗…
-
前言 对于一些简单的事件判别,如点击按钮。无需写代码关联信号和槽函数。 connect(ui->Btnshowhello,SIGNAL(clicked(bool)),this,SLOT(BtnshowhelloSlot())); 信号与槽的自动关联机制 void on_<object name>_<si…
-
前言 我们用一个label控件来实时显示系统时间,用到 QTimer 和 QDateTime 这个两个类。 正题 // 头文件 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QTimer> #include <QDa…
-
前言 今天正好搞一下窗口的阴影,参考了网上诸多文章,在此总结一下。 正题 窗口阴影任意调节,包括阴影像素、是否圆角等。直接上代码: void DropShadowWidget::paintEvent(QPaintEvent *event) { QPainterPath path; …
-
指向引用的指针 简单使用指针的一个例子就是: int a = 1; int *p = &a; 预先强调:没有指向引用的指针 原因:因为引用 不是对象,没有地址 。 但是指向引用的指针是什么形式呢?是对一个引用进行如下取地址吗? i…
-
重载(overload) 定义 在同一个作用域内,两函数的 函数名相同, 参数不相同(可以是参数类型不同或者是参数个数不同), 那么就说这两个 函数重载 。 分类 函数重载 和 运算符重载 (本质都一样) [c-alert type="error"]注…
-
C++类默认拷贝构造函数的弊端 C++类的中有两个特殊的构造函数,(1)无参构造函数,(2)拷贝构造函数。它们的特殊之处在于:(1) 当类中没有定义任何构造函数时,编译器会默认提供一个无参构造函数且其函数体为空;(2) 当类中没有定义拷贝构造函数时,编译器会默认提供…
-
变量定义 变量的定义用于为变量分配存储空间,还可以为变量指定初始值。在一个程序中,变量有且仅有一个定义。 变量声明 用于向程序表明变量的类型和名字。程序中变量可以声明多次,但只能定义一次。 变量的类型 …
-
实现机制原理剖析 1. 编译器并不是把函数模板处理成能够处理任意类的函数 2. 编译器从函数模板通过具体类型来产生不同的函数 3. 编译器会对函数模板进行两次编译 (1)在声明的位置对模板代码进行编译 (2)在调用的位置对参数…
-
前言 有时我们希望某些常量只在类中有效。由于 #define 定义的宏常量是 全局 的,不能达到目的,于是想当然地觉得应该用 const 修饰 数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const数据成员只在某个对象生存期内是常量,…
-
重点知识 1. 函数模板**不允许自动转换**,普通函数**可以进行自动类型转换**2. 函数模板可以像普通函数一样被**重载**3. C++编译器**优先考虑调用普通函数**4. 如果函数模板可以**产生一个更好的匹配**,则选择模板函数5. 可以通过**空模板实参列表**的语…
-
#pragma once 与 #ifndef 作用 (1)在C/C++中,在使用预编译指令#include的时候,为了防止重复引用造成二义性。(2)在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别。 #pragma once 与 #ifndef 的用法 #pragma …
-
用new运算符分配内存并初始化 1.分配内存初始化标量类型(如 int 或 double),在类型名后加初始值,并用小括号括起,C++11中也支持大括号。 int * pi = new int (6); double * pd = new double (9.99); //C++11中, 支持以下写法 int * pi = new int {6}; do…