C++
文章平均质量分 67
Stephan14
这个作者很懒,什么都没留下…
展开
-
自增自减运算符
在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。变量i被称为“计数器”,用来记录完成某一操作的次数。C语言为这种计数器操作提供了两个更为简洁的运算符,即++和--,分别叫做自增运算符和自减运算符。它们是从右向左结合的一元算术运算符,优先级为2。学习和应用这两个运算符时应注意以下几点:1 注意表达式的值和变量值的区别 以自增运算符为例,当自增运算符++作用于一个变转载 2014-08-19 14:29:44 · 1290 阅读 · 0 评论 -
从 Qt 的 delete 说开来
在C++中学习过程中,我们都知道:delete 和 new 必须 配对使用(一 一对应):delete少了,则内存泄露,多了麻烦更大。Qt作为C++的库,显然是不会违背C++的前述原则的。可是:在Qt中,我们很多时候都疯狂地用new,却很少用delete,缺少的 delete 去哪儿了?!注:本文暂不涉及智能指针(smart pointer)相关的东西,你可以考虑转载 2015-08-11 09:05:56 · 487 阅读 · 0 评论 -
QGraphicsDropShadowEffect
在QT中看到了QGraphicsDropShadowEffect这个类,就比较好奇这个类的用法,上网查了一下这个类的简单的介绍。该类提供了图形元素的阴影效果,用于增加立体感。主要设置函数有3个,setColor()用于设定阴影的颜色,setBlurRadius()用于设定阴影的模糊度,setOffset (qreal dx,qreal dy)用于设定在哪个方向产生阴影效果,如果dx为负数,原创 2015-08-10 22:56:47 · 4420 阅读 · 0 评论 -
QT中的.pro文件
转自:http://blog.csdn.net/adriano119/article/details/5878169在QT中,有一个工具qmake可以生成一个makefile文件,它是由.pro文件生成而来的,.pro文件的写法如下:1. 注释从“#”开始,到这一行结束。2.模板变量告诉qmake为这个应用程序生成哪种makefile。下面是可供使用的选择:TE转载 2015-07-24 09:01:38 · 578 阅读 · 0 评论 -
NULL和nullptr
在Clang 6.0 的stddef.h文件中可以找到NULL和nullptr的声明:12345678910111213141516#undef NULL#ifdef __cplusplus# if !defi原创 2015-07-24 09:41:45 · 1309 阅读 · 0 评论 -
error: allocating an object of abstract class type
Qt中的报错;error: allocating an object of abstract class type通常是由于该类,有未实现的虚函数,需要实现。原创 2015-09-05 23:57:08 · 2661 阅读 · 0 评论 -
根据基类指针判断指针指向的子类
近期突然自己想到了一个问题:如果我现在有一个基类,它有很多个子类。同时现在又有一个基类指针,它指向一个子类,但是我不知道其具体是哪一个子类,所以如果我想知道它实际指向哪个子类在java中可以有instanceof可以实现,而在C++中怎么实现呢?后来我想了一段时间,终于想明白了,在C++中如果想在运行而不是在编译的过程中获得对象的具体的类型,那么就必须要用到虚函数。其实虚函数的出现就可以理解为原创 2015-10-04 00:56:41 · 3793 阅读 · 1 评论 -
那些C++牛人的博客
现整理收集C++世界里那些“牛人”的个人博客。凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人;二是C++运用炉火纯青的高手,有原创性的技术干货;三是中文世界里的C++牛人。C++大牛的博客Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,转载 2015-09-18 20:04:05 · 2293 阅读 · 0 评论 -
状态模式
意图:使行为自动适应状态的改变,去掉if或者case语句结构图:使用场景:1.对象收到其他对象的请求时,根据自身的不同状态做出不同的反应2.一个操作中含有大量的条件分支语句,并且这些分支依赖于状态优点:1.通过增加State的子类可以容易的增加新的状态和转化2.状态转换的时候,Context类中只需要重新绑定一个State变量,无须重新赋值,避免内部状态不一致原创 2015-10-22 14:11:14 · 498 阅读 · 0 评论 -
C++中模板与用C语言中实现模板
1、模板的概念我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y){ return(x>y)?x:y ; }//函数2.转载 2016-03-05 10:02:16 · 6042 阅读 · 0 评论 -
127.Word Ladder
昨天晚上在LeetCode随便选了一道题写会儿代码,选中了Word Ladder,这道题刚开始只是有一点思路,不知道具体往下怎么做,先看看题吗要求如下:Given two words (beginWord and endWord), and a dictionary's word list, find the length of shortest transformation sequ原创 2016-03-31 11:07:23 · 832 阅读 · 0 评论 -
1.Two Sum
今晚看完天下足球之后,在leetcode上最一道题,于是选择了第一道题Two Sum,题目的叙述如下:Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input wou原创 2016-03-28 23:05:05 · 432 阅读 · 0 评论 -
179.Largest Number
近期开始在LeetCode上开始刷题,第一道题是Largest Number,题目内容如下:Given a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest for原创 2016-03-27 14:34:09 · 514 阅读 · 0 评论 -
交换两个整数
今天写程序的时候回想起曾经好像在那见过没有使用中间变量进行两个整数的交换,马马虎虎地记得那时通过加减法来实现的,所以就查了一下资料,果然存在这这种方法,代码如下:void swap1 (int& x,int& y){ x=x+y; y=x-y; x=x-y;}void swap2 (int &x,int &y原创 2016-04-07 10:36:38 · 648 阅读 · 0 评论 -
三种单例模式的C++实现
通过单例模式,可以做到以下三点:1.确保一个类只有一个实例被创建2.提供了一个对对象全局访问的指针3.在不影响单例类的客户端的情况下允许将来有多个实例延迟式:特点:延迟加载,也就是说直到实力类被用到的时候才会被加载C++代码:Singleton.h#ifndef __C__Review__Singleton__#define __C__Review__Sin原创 2015-09-10 00:25:24 · 647 阅读 · 0 评论 -
QT中实现在控制台输出
今天在用QT写程序的时候,为了测试程序,想要在程序执行的中间过程在用C++中的cout进行输出,但是使用cout显示。经过查阅资料发现,原因是.pro的工程文件的内容导致的,在工程文件中加入CONFIG += console然后重新构建程序即可。原创 2015-08-09 09:14:42 · 6821 阅读 · 0 评论 -
Mac上安装gdb
1. 安装gdbGDB作为一个强大的c/c++调试工具,一直是程序猿们的良好伴侣,但转到Mac os才发现竟然没有默认安装,所幸还有强大的homebrew工具:brew install homebrew/dupes/gdb然后就是漫长的等待+编译安装时间了,安装完成后敲击gdb能打印出版本信息,说明已经正确安装了:如果现在就使用gdb进行程序调试的话会发现,根本行不通:转载 2015-07-13 21:37:41 · 1393 阅读 · 0 评论 -
C和C++中得结构体
C/C++语言中的解释结构体定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。结构体作用 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。 在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。 结构体在函数中的作用转载 2014-09-18 23:32:27 · 864 阅读 · 0 评论 -
动态数组
C++定义动态数组首先:为什么需要动态定义数组呢? 这是因为,很多情况下,在预编译过程阶段,数组的长度是不能预先知道的,必须在程序运行时动态的给出 但是问题是,c++要求定义数组时,必须明确给定数组的大小,要不然编译通不过 如: int Array[5];正确 int i=5; int Array[i]; 错误 因为在编转载 2014-09-10 22:38:50 · 593 阅读 · 0 评论 -
C++模板
12.1 C++高级编程之模板简介C++模板机制的出现增强了软件可重用性,反应到具体的应用程序中最简单的表现是程序代码实现同一功能性操作只需要定义实现一次,就可以处理不同类型的数据。C++中模板机制最直接表现形式为通用函数以及通用类的定义实现。在通用函数与通用类的定义中,可以通过将函数处理以及类操作处理的不同数据类型定义为一个模板参数。因此通过这样一种实现机制,通用函数与通用类将会用于实转载 2014-09-12 22:19:56 · 653 阅读 · 0 评论 -
C与C++中的结构体
C/C++语言中的解释 结构体定义 结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构。结构体作用 结构体和其他类型基础数据类型一样,例如int类型,char类型 只不过结构体可以做成你想要的数据类型。以方便日后的使用。 在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。 结构体在函转载 2014-08-18 15:01:04 · 644 阅读 · 0 评论 -
关于C++模板的链接错误问题
好久不用C++了,前几天写了一个模版,按以前的习惯,把定义写在头文件中, 把实现写在cpp文件中。结果在编译的时候没有发生错误,但在连接的时候出现了找不到xxx的错误。一时之间不知道该怎么办才好,后来上网一查,自己再一想,唉,原来如此: 模版之所以为模版,就是可以容纳不同的类型嘛,所以它只有在指定了其类型的时候才会生成实际的代码,如果你只把模版的定义写在头文件中,那么你生成在使用模转载 2014-09-15 22:48:56 · 1930 阅读 · 0 评论 -
c/c++笔试题——C++中 new/delete 概念和用法总结
学过C++的程序员都知道,new/delete是其管理内存的主要方法。与C语言相比,C++支持面向对象技术,因此在内存管理方面有所区别。 在C++中,数据对象(基本类型和复合类型)的创建包括两个部分:一是给数据对象分配足够的内存,二是内存进行数据的初始化。而C中,只有第一个分配内存的作用。并且,不仅仅是类,其它基本类型,如int型等,也是如此。例如: char*转载 2014-11-13 12:45:19 · 683 阅读 · 0 评论 -
【C++进阶】for循环以及for循环运行机制
【C++进阶】for循环以及for循环运行机制for (expr1; expr2; expr3)statement第一个表示式只在循环开始前执行一次并且无条件执行。第二个表示式从第一次执行循环开始就在循环开始前运行做一次判断该表达式布尔值,是真就执行循环,是假就中断。如果第一次循环就是假,直接不执行for体。第三个表达式从第一次执行循环开始就在每次循环结束后转载 2014-11-14 23:36:40 · 1253 阅读 · 0 评论 -
二叉树的非递归遍历
二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有前序、中序以及后序三种遍历方法。因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁。而对于树的遍历若采用非递归的方法,就要采用栈去模拟实现。在三种遍历中,前序和中序遍历的非递归算法都很容易实现,非递归后序遍历实现起来相对转载 2014-11-21 00:36:30 · 526 阅读 · 0 评论 -
C++运算符重载
C++运算符重载1. 运算符重载介绍之前的函数重载,允许多个同名不同参数类型的函数;运算符重载允许程序员如何使用运算符(如+、-、==、=和!)来处理不同类型的数据类型;对于基本数据类型,运算符是可以使用的:对于自定义数据类型:如果为对自定义MyString的运算符+定义,会出现编译错误。当一个运算符重载时,对于C++将会根据数据转载 2014-12-02 00:40:36 · 535 阅读 · 0 评论 -
入门训练 圆的面积
问题描述给定圆的半径r,求圆的面积。输入格式输入包含一个整数r,表示圆的半径。输出格式输出一行,包含一个实数,四舍五入保留小数点后7位,表示圆的面积。说明:在本题中,输入是一个整数,但是输出是一个实数。对于实数输出的问题,请一定看清楚实数输出的要求,比如本题中要求保留小数点后7位,则你的程序必须严格的输出7位小数,输出过多或者过少的小数位原创 2015-01-31 10:26:38 · 571 阅读 · 0 评论 -
C++中的静态变量
静态变量作用范围在一个文件内,程序开始时分配空间,结束时释放空间,默认初始化为0,使用时可以改变其值。 静态变量或静态函数只有本文件内的代码才能访问它,它的名字在其它文件中不可见。用法1:函数内部声明的static变量,可作为对象间的一种通信机制 如果一局部变量被声明为static,那么将只有唯一的一个静态分配的对象,它被用于在该函数的所有调用中表示这个变量。这个对象将原创 2014-12-10 16:13:59 · 1392 阅读 · 0 评论 -
C++中得拷贝构造函数
1.什么是拷贝构造函数:拷贝构造函数嘛,当然就是拷贝和构造了。(其实很多名字,只要静下心来想一想,就真的是顾名思义呀)拷贝又称复制,因此拷贝构造函数又称复制构造函数。百度百科上是这样说的:拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。转载 2015-03-21 00:11:58 · 537 阅读 · 0 评论 -
如何在topcoder上进行算法比赛
原文地址:如何在topcoder上进行算法比赛作者:【如来】topcoder的竞赛页面地址:http://www.topcoder.com/tc topcoder竞赛有算法,软件设计,软件开发,高中生算法竞赛,马拉松赛之分。每次比赛根据最终成绩可赚取rating。成绩优者可赚取一定数量的dollar。 首先需要在topcoder下注册个帐号。填够资料,然后选择你想参加的转载 2015-04-12 11:09:58 · 8689 阅读 · 2 评论 -
二叉树的文本模式输出
转自:http://youthlin.com/2014868.html上周一数据结构上机,题目是”二叉树相关算法的实验验证”,其中要求 为便于观察程序的运行结果,设计的输出函数能在输出设备上以图形或表格或其它直观的形式输出计算结果。好吧,比较友好的让他显示树状就行了,可是想了很久就是不知道怎么办。。。上网搜索了一下”输出二叉树“,真正找到两篇有用的文章,一篇是CSDN copica转载 2015-04-24 23:02:29 · 2316 阅读 · 1 评论 -
基于管道的进程间通信代码分析
用pipe()创建一个管道文件,然后用fork()创建两个生产进程和两个消费进程,它们之间通过pipe()传递信息。#include "sys/types.h"#include "sys/file.h"#include "stdio.h"#include "unistd.h"#include "string.h"#include "stdlib.h"char r_buf[4];原创 2015-06-05 00:19:55 · 1453 阅读 · 0 评论