![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
无力吐槽的典哥
不错
展开
-
基于Qt的截图工具,实现截图后进行编辑
基于Qt的截图工具,采用了类似QQ截图的控制面板,先上效果图。 1.基本截图 2.画箭头 3.画矩形 4.画圆形 5.文字编辑 6.同时进行编辑 截图的思路主要是先得到当前的全屏图,然后沿着这个全屏图绘制一大圈路径,然后用暗色填充,即得到了背景大图。基本的截图操作就是根据鼠标初始按下的位置和最终松开的位置,根据这两个位置点,得到一个矩形,按照这个矩形绘制路径,...............原创 2017-10-14 13:42:10 · 3853 阅读 · 19 评论 -
STL容器知识点总结(面试用)
vector:动态增加大小,每一次扩容都以原大小的两倍另外配置一块较大空间,然后将原内容拷贝过来,接着才开始在原内容之后构造新元素,并释放原vector。由上,所以对于vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。list:插入和接合操作都不会造成原有的list迭代器失效,删除的话,只是影响被删除元素的迭代器失效;list是一个环状双向链表,只...原创 2020-02-09 14:12:18 · 537 阅读 · 0 评论 -
STL中的二分查找——lower_bound 、upper_bound 、binary_search
二分查找很简单,原理就不说了。STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提)。 其中如果寻找的value存在,那么lower_bound返回一个迭代器指向其中第一个这个元素。upper_bound返回一个迭代器指向其中最后一个这个元素的下一个位置(明确点原创 2017-10-31 16:27:12 · 306 阅读 · 0 评论 -
C++primer学习笔记----面向对象程序设计(1)
面向对象程序设计的核心是数据抽象、继承和动态绑定(多态)基类负责定义在层次关系中所有类共同拥有的成员,每个派生类定义各自特有的成员。对于某些函数,基类希望它的派生类各自定义适合自身的版本,此时基类就将这些函数声明成虚函数。派生类必须在其内部对所有重新定义的虚函数进行声明。C++语言中,当使用基类的引用(或指针)调用一个虚函数时将发生动态绑定。基类通常都应该定义一个虚析构函数,即使该原创 2017-06-11 14:16:22 · 575 阅读 · 0 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do原创 2017-12-22 15:27:10 · 151 阅读 · 0 评论 -
生成范围在[a,b]之中的随机整数
生成a到b之间的随机数==>int i = rand()%(b-a) + a;原理:对于任意整数a,b有:0 于是:0+a 即:a原创 2017-12-07 10:16:01 · 2740 阅读 · 0 评论 -
细说new与malloc的10点区别
前言几个星期前去面试C++研发的实习岗位,面试官问了个问题:new与malloc有什么区别?这是个老生常谈的问题。当时我回答new从自由存储区上分配内存,malloc从堆上分配内存;new/delete会调用构造函数/析构函数对对象进行初始化与销毁;operator new/delete可以进行重载;然后强行分析了一下自由存储区与堆的区别。回来后感觉这个问题其实回答得不转载 2018-01-31 15:33:50 · 162 阅读 · 0 评论 -
C++(虚)继承类的内存占用大小
首先,平时所声明的类只是一种类型定义,它本身是没有大小可言的。 因此,如果用sizeof运算符对一个类型名操作,那得到的是具有该类型实体的大小。计算一个类对象的大小时的规律:1、空类、单一继承的空类、多重继承的空类所占空间大小为:1(字节,下同);2、一个类中,虚函数本身、成员函数(包括静态与非静态)和静态数据成员都是不占用类对象的存储空间的;3、因此一个对象的大小原创 2018-01-16 21:19:17 · 407 阅读 · 0 评论 -
vector的resize函数和reserve函数
对于C++的vector容器模板类,存在size和capacity这样两个概念,可以分别通过vector的size()和capacity()方法获得该vector当前的size和capacity值。相应的,vector提供了两个方法来分别对size和capacity进行操作,它们就是resize方法和reserve方法。首先,对于size和capacity,这是两个比较容易混淆原创 2018-01-17 11:01:15 · 287 阅读 · 0 评论 -
C++函数指针、函数对象与C++11 function对象对比分析
1.函数指针函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针主要由以下两方面的用途:调用函数和用作函数参数。函数指针的声明方法数据类型标志符 (指针变量名) (形参列表); 一般函数的声明为: int func ( int x ); 而一个函数指针的声明方法为: int (*fu原创 2018-02-04 13:20:00 · 1850 阅读 · 0 评论 -
深入理解C++中public、protected及private用法
初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容易搞糊涂。今天本文就来十分分析一下C++中public、protected及private用法。相信对于大家深入掌握C++程序设计会有很大的帮助。这里我们首先要明白下面几点。1.类的一个特征就是封装,public和private作用就是实现这一目的。所以:用户代码(类外)可以访问p...原创 2018-03-02 09:58:04 · 1075 阅读 · 0 评论 -
是否能在构造函数,析构函数中抛出异常?
最近在工作中,接触到两次这个问题,一次是与Manager的每月一次交流中,Manager问我这个问题,当时回答得支支吾吾;另外一次是《Code View》学习小组会上,同事问到过这个问题。所以索性整理下来,以便自己明确。 首先是析构函数。一. 析构函数 参照《Effective C++》中条款08:别让异常逃离析构函数。 总结如下: 1. 不要在析构函数中抛出异常!虽...原创 2018-03-22 17:01:05 · 361 阅读 · 0 评论 -
#ifndef的用法
作用:防止头文件的重复包含和编译 定义 #ifndef x #define x ... #endif 这是宏定义的一种,它可以根据是否已经定义了一个变量来进行分支选择,一般用于调试等等.实际上确切的说这应该是预处理功能中三种(宏定义,文件包含和条件编译)中的一种----条件编译。 C语言在对程序进行编译时,会先根据预处理命令进行“预处理”。C语言编译系统包括预处理,编译和链接等部分。 ...原创 2018-06-13 21:07:06 · 20571 阅读 · 2 评论 -
数组中找出出现次数超过一半的数
剑指offer中的题目,利用快速排序的partition函数进行解决,代码如下class Solution {public: int partition(vector<int> numbers,int p,int r) { //当遇到特殊的输入情况时候,要和面试官沟通,究竟应该返回值取到什么 int x=numbers[r]; ...原创 2018-07-19 21:37:11 · 534 阅读 · 0 评论 -
C/C++ typedef用法详解(干货)
第一、四个用途用途一:定义一种类型的别名,而不是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa,pb;//这多数情况下不符合我们的意图,它只声明了一个指向字符变量的指针和一个字符变量;以下则可行:typedef char* PCHAR;//一般用大写PCHAR pa,pb;//可行,同时声明了两个指向字符变量的指针虽然:char *pa,*pb;原创 2017-10-22 20:16:11 · 3057 阅读 · 0 评论 -
C++中的static关键字的总结
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下: //Example 1#incl原创 2017-10-21 16:52:50 · 164 阅读 · 0 评论 -
C++中各种数据成员及成员函数的定义及使用
1.类是自定义的数据类型.类与应用程序不同,类的功能虽然独立,但不能独立启动,就象汽车零件那样. 2.Class 是一种数据类型, 其变量为对象.对象包含有member variables(成员变量)和member functions(成员函数).class Date{ int year, month, day;public: void set(int y,int m,int d);原创 2017-10-09 15:47:30 · 14460 阅读 · 0 评论 -
判定一个list<int>中的元素和一个vector<int>中的元素是否相等
两个容器相等的充分条件是包含相同个数的元素,且对位元素的值都相等。因此首先判断两个容器是否包含相同个数的元素,若不等,则两个容器不等。否则遍历两个容器中的元素,两两比较对位元素的值,若有元素不相等,则容器不等,否则相等原创 2017-05-17 20:18:28 · 1156 阅读 · 0 评论 -
面向对象编程与面向过程编程的区别
面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程中,数据和对数据的操作是分离的。面向对象编程是把构成问题的事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为,面向对象编程中,数据和对数据的操作是绑定在一起的。封装:把客观事物封装成抽象的类,隐藏属性和方法的实现细节,仅对外公开原创 2017-05-31 10:53:49 · 648 阅读 · 0 评论 -
C++primer学习笔记--右值引用
右值引用即必须绑定到右值的引用,通过&&来获得。性质:只能绑定到一个将要销毁的对象,不能将一个右值引用直接绑定到一个左值上。不能将常规引用(左值引用)绑定到要求转换的表达式、字面常量、或是返回右值的表达式,但右值引用可以。可以将一个const引用绑定到一个右值上。变量时左值,所以不能将一个右值引用直接绑定到一个变量上,即使变量时右值引用类型也不行。原创 2017-06-28 20:54:56 · 401 阅读 · 0 评论 -
C++primer学习笔记----拷贝控制
一个类通过定义五种特殊的成员函数来控制拷贝控制操作:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数。原创 2017-06-10 13:01:09 · 385 阅读 · 0 评论 -
C++primer学习笔记----面向对象程序设计(2)
静态类型在编译时就已经确定了,是变量声明时的类型或表达式生成的类型。动态类型则是变量或表达式表示的内存中的对象的类型,动态类型直到运行时才知道。例如:Quote *PQuote=new Bulk_quote,指针PQuote的静态类型为Quote,编译时已经确定,但动态类型是Bulk_quote,直到运行时才知道指向的是基类还是派生类。若一个变量非指针也非引用。则静态类型和动态类型永远一致原创 2017-06-11 14:33:21 · 279 阅读 · 0 评论 -
C++中结构体与类的区别(struct与class的区别)
转载来源:http://blog.sina.com.cn/s/blog_48f587a80100k630.htmlC++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和c转载 2017-06-11 14:47:13 · 390 阅读 · 0 评论 -
static关键字的作用
1.函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值2.在模块内的static全局变量可以被模块内的所用函数访问,但不能被模块外的其他函数访问3.在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内4.在类中的static成员变量属于整个类所拥有,对类的所有对象只原创 2017-06-26 21:03:24 · 281 阅读 · 0 评论 -
C++实参与形参
1.实参和形参的区别:形参出现在函数定义的地方,多个形参之间以逗号分隔,形参规定了一个函数所接受数据的类型和数量。实参出现在函数调用的地方,实参的数量与类型与形参一样,实参用于初始化形参。2.形参和函数体内部定义的变量统称为局部变量,仅在函数的作用域内可见,同时局部变量还会隐藏在外层作用域中同名的其他所有声明(局部变量和全局变量可以重名)局部静态对象在程序的执行路径第一次经过对象定义语句时原创 2017-06-28 08:49:15 · 5033 阅读 · 0 评论 -
顶层const
指针本身是一个对象,它又可以指向另一个对象。用顶层const表示指针本身是个常量,用底层const表示指针所指的对象是一个常量。但内置类型只有顶层const。可以用非const量初始化一个底层const对象,但反过来不可以。一个普通的引用必须用同类型的对象初始化。非const量(指针/引用)不能指向/绑定const量,反过来是可以的。原创 2017-06-28 08:56:15 · 262 阅读 · 0 评论 -
pow函数
C++提供以下几种pow函数的重载形式:double pow(double X,int Y);float pow(float X,float Y);float pow(float X,int Y);long double pow(long double X,long double Y);long double pow(long double X,int Y);返回X的Y次幂。原创 2017-09-05 09:21:28 · 7229 阅读 · 0 评论 -
阻止拷贝的三种方式
有些时候我们在定义一个类的时候不希望其中的拷贝控制成员(拷贝构造和拷贝赋值)起作用,也就是阻止拷贝,这时候可能有人会想,那我们干脆不定义这样的拷贝控制函数不就OK了,但悲催的是如果自己不定义,好心的编译器也会及时的学习雷锋好榜样帮你合成定义,即传说中的合成拷贝构造、合成拷贝赋值。既然如此,应该如何操作实现我们的目的呢,结合effective C++的条款中给出两种方式,而C++11当中也给出了一种,原创 2017-09-13 16:28:41 · 4019 阅读 · 0 评论 -
读取文本文件中数据到vector中,以每一行作为独立元素和以每一词作为独立元素
读取文本文件中数据到vector中,以每一行作为独立元素和以每一词作为独立元素原创 2017-05-15 20:49:28 · 485 阅读 · 0 评论