c++
文章平均质量分 62
渴望可及
这个作者很懒,什么都没留下…
展开
-
OOP三个基本特征:封装、继承、多态
OOP三个基本特征:封装、继承、多态C++编程之—面向对象的三个基本特征默认分类 2008-06-28 21:17:04 阅读12 评论1字号:大中小 面向对象的三个基本特征是:封装、继承、多态。 封装封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类转载 2015-10-19 11:05:04 · 2019 阅读 · 0 评论 -
C++设计模式之抽象工厂模式
这篇文章主要介绍了C++设计模式之抽象工厂模式,本文要讲的抽象工厂模式,就是工厂方法模式的扩展和延伸,需要的朋友可以参考下问题描述之前讲到了C++设计模式——工厂方法模式,我们可能会想到,后期产品会越来越多了,建立的工厂也会越来越多,工厂进行了增长,工厂变的凌乱而难于管理;由于工厂方法模式创建的对象都是继承于Product的,所以工厂方法模式中,每个工厂只能转载 2015-11-21 14:20:26 · 342 阅读 · 0 评论 -
C++设计模式之建造者模式
这篇文章主要介绍了C++设计模式之建造者模式,一个复杂对象是由多个部件组成的,建造者模式是把复杂对象的创建和部件的创建分别开来,分别用Builder类和Director类来表示,需要的朋友可以参考下建造者模式在GOF的《设计模式 可复用面向对象软件的基础》中是这样说的:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。这句话,转载 2015-11-21 14:22:25 · 392 阅读 · 0 评论 -
Linux进程间通信——使用消息队列
下面来说说如何用不用消息队列来进行进程间的通信,消息队列与命名管道有很多相似之处。有关命名管道的更多内容可以参阅我的另一篇文章:Linux进程间通信——使用命名管道一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消转载 2015-12-15 16:28:57 · 366 阅读 · 0 评论 -
进程间通信--管道
前面我们学习了一下进程,我们知道多,进程间的地址空间相对独立。进程与进程间不能像线程间通过全局变量通信。 如果想进程间通信,就需要其他机制。 常用的进程间通信方式有这几种A.传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)B.System v IPC对象共享内存(s转载 2015-12-15 16:53:28 · 403 阅读 · 0 评论 -
java中的extends implements含义以及区别
extends 继承 类X 通过extend 类Y来添加功能,或者添加变量,或者添加方法,或者覆盖类Y的方法。一个接口extends另外一个接口来添加方法。范例在 B 类别 (定义如下) 中,会自动插入一个以 A 类别之建构函式作为对象的呼叫,作为 B 建构函式的第一行陈述式,这是因为该处并未存在任何呼叫的缘故。 (也就是说,这个呼叫在范例中被注解化。)class B ex转载 2015-12-01 16:28:08 · 5185 阅读 · 0 评论 -
try catch 使用
一句话解释:try catch机制非常好。那些觉得try catch不行的人,是他们自己的水平有问题,无法理解这种机制。并且这群人写代码不遵守规则,喜欢偷懒,这才造成try catch不好的错觉。详细解释:1.程序要健壮,必须要设计报错机制。最古老,也是最常见的,比如:bool CreateFile( );//如果创建文件失败就返回false,否则返回true。这种转载 2015-12-03 09:12:34 · 642 阅读 · 0 评论 -
socket通信
对TCP/IP、UDP、Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵。那么我想问:1. 什么是TCP/IP、UDP?2. Socket在哪里呢?3. Socket是什么呢?4. 你会使用它们吗?什么是TCP/IP、UDP? TCP/IP(Trans转载 2015-12-03 14:42:33 · 275 阅读 · 0 评论 -
标准I/O的三种缓冲
最近,有几个同学让我看了一个程序,后来发现问题都是出在使用printf()函数进行输出时的缓冲模式造成的。比如这样的程序:#include stdio.h>int main(){ fprintf(stout,"1234"); while(1); return 0; } 程序并不是很长,但是就这样的程序出现了一个问题:转载 2016-01-26 16:33:46 · 1070 阅读 · 0 评论 -
exit()与_exit()的区别
版权声明:本文为博主原创文章,未经博主允许不得转载。 从图中可以看出,_exit 函数的作用是:直接使进程停止运行,清除其使用的内存空间,并清除其在内核的各种数据结构;exit 函数则在这些基础上做了一些小动作,在执行退出之前还加了若干道工序。exit() 函数与 _exit() 函数的最大区别在于exit()转载 2016-01-26 16:34:53 · 606 阅读 · 0 评论 -
const 指针与指向const的指针
当使用带有const的指针时其实有两种意思。一种指的是你不能修改指针本身的内容,另一种指的是你不能修改指针指向的内容。 先说指向const的指针,它的意思是指针指向的内容是不能被修改的。它有两种写法。 const int* p; (推荐) int const* p; 第一种可以理解为,p是一个指针,它指向的内容是const i转载 2016-03-15 23:00:57 · 1130 阅读 · 0 评论 -
%02x与%2x 之间的区别
输出最小宽度用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,若实际位数少于定义的宽度则补以空格或0(当最小宽度数值以0开头时)。X 表示以十六进制形式输出02 表示不足两位,前面补0输出;如果超过两位,则实际输出举例:printf("%02X", 0x345); //打印出:345printf("%02X", 0x6); //打印出:06原创 2016-03-09 09:19:17 · 75870 阅读 · 1 评论 -
数组和指针背后——内存角度
聊过数组和指针的区别,主要是对于数组和指针在内存中的访问方式加以区分,这篇博文则从更深层的角度剖析数组和指针的联系如果你也对底层感兴趣、我向这篇文章会对你有所帮助,什么时候数组和指针相同(When an Array Is a Pointer )在实际应用中,他们可以互换的情形要大大多于不能互换的情形。首先再回顾一下声明和定义,(上一篇中有提到这里在深入一下)声明本身还可以进转载 2016-03-13 07:10:29 · 474 阅读 · 0 评论 -
请问 char *型指针 和 int *型指针 的区别是什么?
区别1:还是指针,指针的2个内容要清楚 1个是指针类型 1个是指针地址char *p1;int *p2;p1 = (char *)malloc(1024 * 100);p2 = (int *)malloc(1024 * 100); 你分配了2块内存,一个100字节 首地址给了p1,一个是400字节 首地址给了p2 p1 = (char *)p2 执行了类型转换原创 2016-03-13 07:15:22 · 7176 阅读 · 1 评论 -
指针运算——算术运算、关系运算
简单来讲就是:C/C++允许将指针和整数进行相加操作,加1的结果就是等于原来的地址值加上指向对象占用的字节数(如 int*p =(int*)malloc(sizeof(int)*5), p+1 表示p指向内存地址加4个字节)。两个指针如果指向同一个数组,则两个指针进行算术运算才有意义,即 int* p =(int*)malloc(sizeof(int)*5);int*转载 2016-03-14 09:59:07 · 5438 阅读 · 1 评论 -
c语言开源项目
下次造轮子前先看看现有的轮子吧值得学习的C语言开源项目- 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:h转载 2016-05-30 13:38:16 · 804 阅读 · 0 评论 -
代码时间换空间以及空间换时间
void swap(int a, int b){ int c; c=a; a=b;b=a;}//--->空优 void swap(int a, int b){ a=a+b;b=a-b;a=a-b; }//根据以上的题意解释一下以时间换空间,和以空间换时间第一个,用空间换时间,swap中定义了c,就是在内存中又开辟了一个int内存空间,然后一次swap需要进行三次赋转载 2016-05-30 17:57:07 · 9575 阅读 · 0 评论 -
#pragma once
概述编辑简单来讲,就是将#pragma once放在程序的头文件前面后,能够确保该头文件只编译一次。如果跨平台,则尽量使用, #ifndef __X_X_H__如果不是跨平台,则可以使用#pragma once这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。#pragma once是编译器相关的转载 2015-11-21 11:05:24 · 535 阅读 · 0 评论 -
脚本之家的好网址: 首页 >> 软件编程 >> C 语言
推荐一个不错的学习网址:http://www.jb51.net/list/list_159_1.htm放在CSDN 与大家共享!原创 2015-11-21 14:38:12 · 608 阅读 · 0 评论 -
深入解析C++ STL中的常用容器
这里我们不涉及容器的基本操作之类,只是要讨论一下各个容器其各自的特点。STL中的常用容器包括:顺序性容器(vector、deque、list)、关联容器(map、set)、容器适配器(queue、stac)STL是C/C++开发中一个非常重要的模板,而其中定义的各种容器也是非常方便我们大家使用。下面,我们就浅谈某些常用的容器。这里我们不涉及容器的基本操作之类,只是要转载 2015-11-21 14:32:42 · 9733 阅读 · 1 评论 -
C++中引用(&)的用法和应用实例
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在c++学习提高篇(3)---隐式指针的文章中我详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确转载 2015-10-21 12:10:30 · 296 阅读 · 0 评论 -
c++中的强制转换static_cast、dynamic_cast、reinterpret_cast的不同用法儿
C 风格(C-style)强制转型如下:(T) exdivssion // cast exdivssion to be of type T函数风格(Function-style)强制转型使用这样的语法:T(exdivssion) // cast exdivssion to be of type T 这两种形式之间没有本质上的不同,它纯粹就是一个把括号放在哪的问题。我把这转载 2015-11-05 01:17:56 · 386 阅读 · 0 评论 -
C++中的容器类详解
2010-08-18 15:52:15分类: C/C++C++中的容器类包括“顺序存储结构”和“关联存储结构”,前者包括vector,list,deque等;后者包括set,map,multiset,multimap等。若需要存储的元素数在编译器间就可以确定,可以使用数组来存储,否则,就需要用到容器类了。1、vector 连续存储结构,每个元素在内存上是连转载 2015-10-22 11:13:27 · 344 阅读 · 0 评论 -
STL vector用法介绍
介绍这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作。本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用。通过阅读这篇文章读者应该能够有效地使用vector容器,而且应该不会再去使用C类型的动态数组了。 Vector总览vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种转载 2015-11-06 16:05:23 · 275 阅读 · 0 评论 -
如何正确释放Vector的内存
有人提出了一个对于Vector内存泄露的疑问( Link)。采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:“vector 的 clear 不影响 capacity , 你应该 swap 一个空的 vector。”开始并不知道回复者在说什么,于是在谷歌上搜索 vector swap clear转载 2015-11-06 17:27:01 · 4639 阅读 · 0 评论 -
New的VC编译器实现
当我们调用 new 的时候,例如 int *p = new int; 时,编译器到底作了什么工作呢?跟进断点看一看。 (在 vc debug模式下 )double *p1 = new double ;00411A6E push 8 00411A70 call operator new (4111B8h)转载 2015-10-22 22:31:40 · 538 阅读 · 0 评论 -
C++拷贝构造函数详解
一. 什么是拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:[c-sharp] view plaincopyint a = 100; int b = a; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。[c-s转载 2015-10-23 00:14:38 · 339 阅读 · 0 评论 -
C++中的强制类型转换
关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。原创 2015-11-09 09:15:29 · 336 阅读 · 0 评论 -
vector容器
vector是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。和string对象一样,标准库负责管理存储元素的相关内存。我们把vector称为容器,是因为它可以包含其他对象。一个容器中的所有对象都必须是同一种类型的。使用vector之前,必须包含相应的头文件。#include using std::vector;vector是一个类模板(class templ转载 2015-11-12 16:14:53 · 299 阅读 · 0 评论 -
c++通用模板类(template class)定义实现详细介绍
有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int { public : Compare(int a,int b) { x=a; y=b; } int max( ) { return (x>y)?x:y; } int min( ) { return (x&...有时,有两个或多个类,其功能是相同的,仅仅是数据类型转载 2015-11-20 11:11:08 · 19902 阅读 · 1 评论 -
C++设计模式之组合模式
这篇文章主要介绍了C++设计模式之组合模式,本文讲解什么是组合模式、组合模式的优点、组合模式实例等内容,需要的朋友可以参考下问题描述上图,是一个公司的组织结构图,总部下面有多个子公司,同时总部也有各个部门,子公司下面有多个部门。如果对这样的公司开发一个OA系统,作为程序员的你,如何设计这个OA系统呢?先不说如何设计实现,接着往下看,看完了下面的内容,转载 2015-11-21 14:24:22 · 442 阅读 · 0 评论 -
C++设计模式之桥接模式
这篇文章主要介绍了C++设计模式之桥接模式,本文讲解了什么是桥接模式、为什么要使用桥接模式、什么时候使用桥接模式等内容,需要的朋友可以参考下问题描述现在要去画一个图形,图形有长方形、圆形和扇形等等;而图形又可以加上不同的颜色,然后,我们就可以画出红色的长方形,绿色的长方形;红色的圆形,绿色的圆形等等。而这种图形的形状在变化,图形的颜色也在变化,当使用转载 2015-11-21 14:19:17 · 364 阅读 · 0 评论 -
免费赠与c/c++海量视频 学习资料的
如果有需要c/c++海量视频 学习资料的可以试试以下方法(和朋友自己业余搞的公众号,目前处于推广时期):微信关注 “金喜鹊论文发表” 账号,公众号中也有c/c++视频 ,大家也可以 输入 程序 或者 资料, 即可获取 海量的c/c++资料。关注后,输入 2013 , 之后就会回复 visual studio 2原创 2015-11-18 23:15:52 · 531 阅读 · 0 评论 -
白话经典算法系列之五 归并排序的实现
归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。首先考虑下如何将将二个有序数列合并。这个非常简单,只要从比较二个数列的第一个数,谁小就先取谁,取了后就在对应数列中删除这个数。然后再进行比较,如果有数列为空,那直接将另一个数列的数据依次取出即可。[cpp] view plaincopy转载 2015-11-26 00:24:34 · 407 阅读 · 0 评论 -
c++实现简单的线程池
这里给大家介绍了C++中对于pthread线程的一个简单应用以及使用继承CDoit,实现其中的start和end,有需要的小伙伴可以参考下这是对pthread线程的一个简单应用1. 实现了线程池的概念,线程可以重复使用。2. 对信号量,互斥锁等进行封装,业务处理函数中只需写和业务相关的代码。3. 移植性好。如果想把这转载 2015-11-21 14:35:22 · 849 阅读 · 0 评论 -
GTK中创建线程函数g_thread_new和g_thread_create的区别
使用GThread函数,需要引用glib.h头文件。这两个接口的核心区别就是 g_thread_create 是旧的接口,现在已经不使用了,而g_thread_new是新的接口,建议使用。g_thread_create:g_thread_create has been deprecated since version 2.32 and should not be used in原创 2015-11-19 20:09:10 · 8436 阅读 · 0 评论 -
局部字符串指针 局部数组区别
稍微有些编程经验的朋友都会知道一个函数是无法返回一个局部数组的,至于原因,我想从两个方面进行说明,虽然并不是这两个方面都对其有影响,但我认为在这个问题上我们都该了解的东西:① 函数的返回类型不能为一个数组类型。这个就是说,作为函数返回类型的不能为一个数组,我们要想返回一系列的值,只能用一个指针来代替了,返回指向这一系列值的第一个元素的指针。② 局部数组,具有局部作用域,当函数调用结束之原创 2016-07-14 16:08:43 · 1087 阅读 · 0 评论