c/c++
xialianggang1314
目前从事医疗器械软件开发,c++
qt开发工程师
展开
-
堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区转载 2016-04-28 09:42:19 · 1594 阅读 · 0 评论 -
经典C++笔试题目100例!
第一部分:C++与C语言的差异(1-18)1、C 和 C++ 中 struct 有什么区别? Protection行为 能否定义函数 C 无 否,但可以有函数指针 C++ 有 可以,默认是private 2、C++中的 struct 和 class 有什么区别?【参考答案】从语法上讲,class和struct做类型定义时只有两点区...转载 2018-10-25 16:55:52 · 3280 阅读 · 0 评论 -
C++新特性 - 生成指定范围的随机小数或者整数
C++新标准,有一个叫随机数引擎的东西。包含于头文件 <random>随机数库由:引擎,分布组成。具体可参考《C++ primer》#include<random>#include<iostream>using namespace std; int main(){ default_random_engine e; unifo...转载 2018-10-29 09:33:28 · 1918 阅读 · 2 评论 -
gcc编译与gdb调试简要步骤
一、Linux程序gcc编译步骤:Gcc编译过程主要的4个阶段:l 预处理阶段,完成宏定义和include文件展开等工作;(.i)l 根据编译参数进行不同程度的优化,编译成汇编代码(.s.S)l 用汇编器把汇编代码进一步生成目标代码(.o)l 用连接器把生成的目标代码和系统或用户提供的库连接起来,生成可执行文件格式:l gcc -E test.c//预处理阶段...原创 2018-11-07 14:00:48 · 1534 阅读 · 0 评论 -
C++面试题之 static_cast和dynamic_cast区别
在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数据类型...转载 2018-11-12 00:12:29 · 1832 阅读 · 0 评论 -
C++面试题之 多态的实现原理
关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。对C++了解的人都应该知道多态调用是通过虚函数表(Virtual Table)来实现的。简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。 其中:B的虚函数表中存放着B::foo和B::b...转载 2018-11-12 00:24:33 · 1067 阅读 · 0 评论 -
C++面试题之 观察者模式
观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。1.模式定义观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅...转载 2018-11-12 00:32:06 · 463 阅读 · 0 评论 -
C++面试题之 虚函数表解析
前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...原创 2018-11-12 00:44:39 · 930 阅读 · 0 评论 -
C++面试题之 static关键字
1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){ printf("Hello\n")...转载 2018-11-12 00:48:10 · 975 阅读 · 0 评论 -
Qt绘制圆形按钮
关于Qt下绘制按钮的文章不少,这里简单介绍一个怎么绘制圆形⭕️的按钮并在点击时候改变颜色的方法。先上图,如下:==》1 圆形按钮初始状态(未被点击且鼠标未移动到按钮上) ==》2 当鼠标移动到按钮上时的状态==》3、点击圆形按钮时的状态 其他的不多说了,直接上代码吧,具体细节请代码中的注释信息:#ifndef MAINWINDOW_H#define MA...转载 2018-08-01 12:21:43 · 7620 阅读 · 0 评论 -
Windows10 强制Visual Studio以管理员身份运行
Windows 10 的一个既安全又蛋疼之处是UAC的行为被改变了。以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动。然而,在Windows 8上,我们不能关闭UAC,那样的话Metro程序就一个都启动不了了。作为微软技术的码农,我们通常要让Visual Studio在管理员权限下跑。虽然我们可以每次都在右键菜单里选择“以管理员身份运行”...转载 2018-08-03 17:00:09 · 1961 阅读 · 0 评论 -
Qt开发】QThread中的互斥、读写锁、信号量、条件变量
在gemfield的《从pthread到QThread》一文中我们了解了线程的基本使用,但是有一大部分的内容当时说要放到这片文章里讨论,那就是线程的同步问题。关于这个问题,gemfield在《从进 程到线程》中有一个比喻,有必要重新放在下面温习下:*******************************最后用一个比喻来总结下:1、一个进程就好比一个房子里有一个人;2、clone创建...转载 2018-07-24 17:10:23 · 1029 阅读 · 0 评论 -
enum 在c++中的使用
枚举类型,顾名思义,“枚”作为量词,作“个”讲,那么枚举,就是一个一个的列举,如果一件事情能够被一个一个的列举,那么它的数量肯定就是有限的,否则是不能被一一列举出来的。所以枚举类型即为能被列举的常量的一个集合。在生活中,枚举的例子随处可见,比如礼拜几,那么就可以作为一个枚举变量。这个变量所存储的值,是有限的,且,能被我们所列举。再比较说,性别。它也可以作为一个枚举类型,我们知道,性别也就只有“原创 2016-05-07 10:53:04 · 3416 阅读 · 0 评论 -
C++中*与&的区别
*是取值运算符,对地址使用可以获得地址中储存的数值。 对于指针a,*a表示取a中的值&是地址运算符,对变量使用可以获得该变量的地址。 对于变量b,&b表示取b的地址在定义时,* 是一个标识符,声明该变量是一个指针,比如说int *p; 那p就是一个指向int型的指针;在调用时,*p是指针p指向的那个变量,比如说之前有int a=5;int *p=a;那么p的值是a的地原创 2017-10-30 14:01:57 · 21601 阅读 · 4 评论 -
CreateMutex用法详解
HANDLE CreateMutex(LPSECURITY_ATTRIBUTES lpMutexAttributes, // 指向安全属性的指针BOOL bInitialOwner, // 初始化互斥对象的所有者LPCTSTR lpName // 指向互斥对象名的指针);1. CreateMutex只是创建了一把锁, 这把锁你用来锁门还是锁抽屉还是锁原创 2017-11-08 13:09:59 · 53298 阅读 · 3 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plain copyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。转载 2017-11-08 23:12:08 · 155 阅读 · 0 评论 -
三种单例模式的C++实现
简介 因为在设计或开发中,肯定会有这么一种情况,一个类只能有一个对象被创建,如果有多个对象的话,可能会导致状态的混乱和不一致。这种情况下,单例模式是最恰当的解决办法。它有很多种实现方式,各自的特性不相同,使用的情形也不相同。今天要实现的是常用的三种,分别是饿汉式、懒汉式和多线程式。 通过单例模式, 可以做到:1. 确保一个类只有一个实例被建立转载 2017-11-11 12:04:02 · 156 阅读 · 0 评论 -
虚函数和纯虚函数的区别
首先:强调一个概念定义一个函数为虚函数,不代表函数为不被实现的函数。定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。定义一个函数为纯虚函数,才代表函数没有被实现。定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。1、简介假设我们有下面的类层次:[cpp] view plain copyclass A { public: virtua...转载 2018-04-11 17:15:52 · 151 阅读 · 0 评论 -
VS中CString与char型数组相互转换问题
1. char str[]="hello"; CString cstr; cstr.Format(str);2. char str[100]; LPSTR p; CString cstr="hello"; p=cstr.getbuffer(); strcpy(str,p);原创 2018-04-23 09:26:56 · 10893 阅读 · 0 评论 -
QT C++ 单例类写法
前言所谓的单例模式,简单的总结有两点: 1.确保一个类只能创建一个实例 2.能够提供一个访问类对象的全局指针 为满足以上条件,需要做的事情很简单:第一步,将构造函数设置为私有,不让在其它地方可以创建实例;第二步,创建一个公有静态函数接口,在接口中创建类的实例并返回;这样一来,在其它类里面要调用单例类的函数的话,就可以通过调用静态函数拿到类的示例然后再调用类的其它公有函数。来看代码...转载 2018-07-24 16:56:25 · 2859 阅读 · 0 评论