【c/c++】
阿修罗it
科学是神圣的
展开
-
C++进阶学习——单例模式的实现
单例模式也称为单件模式、单子模式,是使用最广泛的设计模式之一。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。单例模式通过类本身来管理其唯一实例,这种特性提供了解决问题的方法。唯一的实例是类的一个普通对象,但设计这个类时,让它只能创建一个实例并提供对此实例的全局访问。唯一实例类Singleton在静态成员函数中隐藏创建实例的操作。习惯上把原创 2015-09-30 10:28:44 · 397 阅读 · 0 评论 -
深入理解字符串常量
#include#includeint main(){printf("xyz:%c",*("xyz"+1));return 0;} 将显示Y,说明了字符串常量是返回存储的首地址。也可以采用下标访问原创 2015-09-21 20:20:43 · 352 阅读 · 0 评论 -
C++项目中的extern "C" {}
在用C++的项目源码中,经常会不可避免的会看到下面的代码:123456789#ifdef __cplusplusextern "C" {#endif /*...*/ #ifdef __cplusplus}#end原创 2015-10-13 17:35:32 · 291 阅读 · 0 评论 -
位图的应用
本文详细讲述了位图算法的定义与C语言实现方法,分享给大家供大家参考之用。具体如下:位图法定义:位图法就是bitmap的缩写,所谓bitmap,是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以用0,1表示。那么就可以开一个int数组,一个int有32个位原创 2015-10-29 14:50:30 · 673 阅读 · 0 评论 -
深入理解C++的动态绑定和静态绑定
深入理解C++的动态绑定和静态绑定开源中国众包“为了支持c++的多态性,才用了动态绑定和静态绑定。理解他们的区别有助于更好的理解多态性,以及在编程的过程中避免犯错误,需要理解四个名词:1、对象的静态类型:对象在声明时采用的类型。是在编译期确定的。2、对象的动态类型:目前所指对象的类型。是在运行期决定的。对象的动态类型可以更改,转载 2016-04-01 11:36:59 · 299 阅读 · 0 评论 -
浅谈 C++ 中的 new/delete 和 new[]/delete[]
在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 delete [] 又是什么?什么时候用它们?你知道 operator new 和 operator delete 吗?为什么 new [] 出来的数组有时可以用 delete 释放有时又不行?…如果你对这些问题都有疑问的话,转载 2016-03-10 19:54:57 · 215 阅读 · 0 评论 -
SStream头文件的使用技巧
C++的输入输出分为三种:(1)基于控制台的I/O (2)基于文件的I/O (3)基于字符串的I/O 1、头文件[cpp] view plaincopyprint?#include 2、作用istringstream类用于执行C++风格的字符串流的输入操作。原创 2016-03-27 18:34:36 · 3042 阅读 · 0 评论 -
ASIO学习
http://sites.google.com/site/polarisnotme/boost/asio/xue-xi-1boost::asio::Io_service构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQu转载 2016-06-25 22:01:37 · 426 阅读 · 0 评论 -
C++临时变量的生命周期
http://www.cnblogs.com/catch/p/3251937.htmlC++ 中的临时变量指的是那些由编译器根据需要在栈上产生的,没有名字的变量。主要的用途主要有两类:1) 函数的返回值, 如: 1 string proc() 2 { 3 return string("abc"); 4 } 5 6 int mai转载 2016-07-08 20:27:36 · 359 阅读 · 0 评论 -
base64
base64阅读: 39124Base64是一种用64个字符来表示任意二进制数据的方法。用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。Base64的原理很简单原创 2016-07-21 09:44:48 · 322 阅读 · 0 评论 -
【C++11】新特性——引入nullprt
1.1 NULL在C中的定义在C中,习惯将NULL定义为void*指针值0:[cpp] view plaincopyprint?#define NULL (void*)0 但同时,也允许将NULL定义为整常数01.2 NULL在C++中的定义在C++中,NULL却被明确定义为整常数0:[cpp] view转载 2015-10-10 16:04:26 · 427 阅读 · 0 评论 -
函数指针与转移表
0条评论Switch(oper){ Case ADD: Result=add(op1,op2);break; Case sub: Result=sub(op1,op2);break; Case mul:原创 2015-09-22 12:44:59 · 545 阅读 · 0 评论 -
assert()函数用法--很好
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include assert.h>void assert( int expression ); assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。请看下面的程序清单badpt原创 2015-09-22 11:38:48 · 409 阅读 · 0 评论 -
Static 静态成员函数-与多线程
1.普通成员函数 可以处理静态成员,普通成员函数跟着对象走,有this指针。 静态成员属于类,因此类名::也可以处理Static成员。在运行栈结构里有this指针。2.静态成员函数只能处理静态成员,没有this指针。 静态成员函数属于类。3.线程函数是进程一部分,OS调用线程函数没有this指针,this指针只C++语言的特性与操作系统无关。因此,从这个角度来说,t原创 2015-10-18 12:07:23 · 2602 阅读 · 0 评论 -
C 高效编程忠告(转)
一、#include “filename.h”和#include 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件二、头文件的作用加强安全检测通过头文件可能方便地调用库功能,而不必关心其实现方式三、* , &修饰符的位置int *i,j; // better转载 2015-09-16 16:13:21 · 385 阅读 · 0 评论 -
零长度的数组巧用
零长度是指定义数组时,指定其长度为0(如int arr[0];),这样的数组不占用实际的空间,但能通过数组名访问到其指向的地址。在标准C和C++中,长度为0的数组是被禁止使用的。不过在GNU C中,存在一个非常奇怪的用法,那就是长度为0的数组,比如Array[0];很多人可能觉得不可思议,长度为0的数组是没有什么意义的,不过在这儿,它表示的完全是另外的一层意思,这个特性是不可移植的,所以,原创 2015-11-05 15:26:24 · 456 阅读 · 0 评论 -
C++笔记
类的声明及定义1. class、struct、union保留字都可以用来声明和定义类。class中成员默认为private类型,struct、union与C语言兼容,成员默认为public类型。2. 只有当类没有显式的定义构造/析构函数时,C++才会提供默认的构造/析构函数;默认的构造函数只负责创建对象,不做任何初始化工作。3. 程序正常退出时,析构函数会被隐式调用;非正常退出(转载 2015-11-05 15:33:25 · 409 阅读 · 0 评论 -
深入理解C++
说一下我为何回归 C++ 了吧 : 简单: 生命有限。用 C , 固然是只有一个范式, 学起来容易, 上手简单, 可是需要操心的问题太多了: 内存泄露, 野指针, 各种断错误。 可能你会说, 内存管理,小心点就可以了。 但我觉得,如果你总是用 200% 的精力去避免内存泄露,你就没有精力开发正常的软件了。你会对软件的逻辑进行折中,因为你实在没有精力开发需要你花很多时间写逻辑的代码了。 于是转载 2015-09-17 15:23:20 · 381 阅读 · 0 评论 -
c语言 conio.h头文件介绍
C语言图形函数(一)C语言图形编程(一,字符屏幕)一,屏幕操作函数1. clrscr()清除字符窗口函数2. window()字符窗口函数3. gotoxy()光标定位函数4. clreol() 清除光标行尾字符函数5. insline() 插入空行函数6. delline() 删除一行函数7. gettext() 拷进文字函数8. putt转载 2015-09-18 10:24:50 · 2848 阅读 · 0 评论 -
#pragma预处理命令的使用
#pragma可以说是C++中最复杂的预处理指令了,下面是最常用的几个#pragma指令:#pragma comment(lib,"XXX.lib")表示链接XXX.lib这个库,和在工程设置里写上XXX.lib的效果一样。#pragma comment(linker,"/ENTRY:main_function")表示指定链接器选项/ENTRY:main_funct转载 2015-09-18 10:28:51 · 467 阅读 · 0 评论 -
成员变量初始化顺序-
[cpp] view plaincopyclass A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout "n1:" ", n2: "原创 2015-10-08 16:10:38 · 363 阅读 · 0 评论 -
位字段---经典
先总结下“位字段”的几个概念:定义:位字段简称字段,是“字”中相邻位的集合;所谓“字”是由实现定义的单一存储单元。字段定义和访问的语法基于结构。位字段所允许的类型:C语言允许unsigned int类型,signed int类型或int类型的位字段,分别称为无符号字段,带符号字段和普通位字段。和普通字符一样,普通位字段可以无符号或带符号。C99允许_Bool类型的位字段。应原创 2015-09-18 16:39:14 · 978 阅读 · 0 评论 -
深入理解C指针与数组-总结
在C语言中,一个变量的声明和定义有什么区别。 我们知道定义只是一个特殊的声明。 定义:只能出现在一个地方,创建新对象,同时确定对象的类型并分配内存。(注意这里所说的对象跟C++中所说的对象没有任何的关系。) 声明:可以出现多次。 描述对象的类型,用于指代其他地方定义的对象。它所说明的并非本身。extern 对象声明原创 2016-09-08 15:46:50 · 485 阅读 · 0 评论