C++ 常用设计模式(学习笔记) 设计模式1、工厂模式在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式作为一种创建模式,一般在创建复杂对象时,考虑使用;在创建简单对象时,建议直接new完成一个实例对象的创建。1.1、简单工厂模式主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。使用简单工厂模式,我们只需要知道具体的产品...
QT QPushButton实现进入、离开、点击三种效果 ui->pushButton->setStyleSheet("QPushButton{border-image: url(:/new/prefix1/image/Main_preset_normal.bmp);}" "QPushButton:hover{border-image: url(:/new/prefix1/imag...
C++常用算法解析之快速排序 //方法一:经典方法void Qsort(int a[], int low, int high){ if(low >= high) return; int first = low; int last = high; int key = a[first]; //用数组的第一个数作为枢轴 while(first &...
单机QPS 一、什么是并发,什么是高并发并发,两个及以上的行为一起发生,比如你一边吃饭一边看电视高并发,多个行为(至于是多少,这个没有定数,你可以认为是100,1000)一起发生二、要多久才能处理完这些请求首先,我们需要明确两个基本点1、处理每个请求需要耗费时间,哪怕时间很短2、服务资源是有限的,不能一次性处理全部请求我们可以假定总并发请求数量为10000,每个请求的处理时...
C++面试题之 static关键字 1.先来介绍它的第一条也是最重要的一条:隐藏。(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。举例来说明。同时编译两个源文件,一个是a.c,另一个是main.c。//a.cchar a = 'A'; // global variablevoid msg(){ printf("Hello")...
C++面试题之 虚函数表解析 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不...
C++面试题之 观察者模式 观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。1.模式定义观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫做发布-订阅...
C++面试题之 多态的实现原理 关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。对C++了解的人都应该知道多态调用是通过虚函数表(Virtual Table)来实现的。简单地说,每一个含有虚函数(无论是其本身的,还是继承而来的)的类都至少有一个与之对应的虚函数表,其中存放着该类所有的虚函数对应的函数指针。 其中:B的虚函数表中存放着B::foo和B::b...
C++面试题之 static_cast和dynamic_cast区别 在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数据类型...
C++面试题之 static_cast和dynamic_cast区别 在C++标准中,提供了关于类型层次转换中的两个关键字static_cast和dynamic_cast。一、static_cast关键字(编译时类型检查)用法:static_cast < type-id > ( expression ),该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性,它主要有如下几种用法:(1)用于基本数据类型...
C++面试题之 QT信号和槽实现机制 Q1、概述 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会...
C++面试题之 QT信号和槽实现机制 Q1、概述 信号槽是 Qt 框架引以为豪的机制之一。所谓信号槽,实际就是观察者模式。当某个事件发生之后,比如,按钮检测到自己被点击了一下,它就会发出一个信号(signal)。这种发出是没有目的的,类似广播。如果有对象对这个信号感兴趣,它就会使用连接(connect)函数,意思是,将想要处理的信号和自己的一个函数(称为槽(slot))绑定来处理这个信号。也就是说,当信号发出时,被连接的槽函数会...