随笔分类 -  c++

摘要:原文链接http://blog.csdn.net/breakerzy/article/details/7271050标准 C++ 中容易忘记但比较重要和常用的基本语法和特性这是 C++ 或 C in C++,而不一定是传统 C 语言的语法和特性零 0字面量 0 是基本类型自动适应的,指针请直接使用 0 而不是 NULL 宏,如:doubledval=0;//0是double类型,写0.0多余doubledval1=1;//1是整数类型,类型提升doubledval2=1.0;//1.0是浮点类型classWidget{virtualvoidpaint(Graphics*g)=0;};stdde 阅读全文
posted @ 2012-11-23 10:09 wangkangluo1 阅读(1020) 评论(0) 推荐(2) 编辑
摘要:原文链接http://blog.csdn.net/breakerzy/article/details/7593137关于 C++ 对象资源管理的惯用法,note-to-self + keynote + idiom case + cross-reference 式笔记keyword: RAII, deleter, Two-stage Initialization, pimpl, Reference Counting (RC), Copy on Write (COW), Smart Pointer (SP)目录C 语言的资源管理方法RAIIdeleterTwo-stage Initializati 阅读全文
posted @ 2012-11-23 10:06 wangkangluo1 阅读(1412) 评论(0) 推荐(0) 编辑
摘要:原文链接http://blog.csdn.net/breakerzy/article/details/7426458关于 C++ 模板编程的惯用法,note-to-self + keynote + idiom case + cross-reference 式笔记目录模板语法模板惯用法示例堆栈上分配编译优化的开关推导数组元素个数推导常数隐式转换的显式函数 implicit_cast推导 callable 可调用物用成员模板实现继承隐喻假设模板基类中的成员CRTP 循环模板模式结合使用函数模板和类模板特化的基本目的解决实例化的代码膨胀traits 特征和 policy 策略参考书籍模板语法^称谓: 阅读全文
posted @ 2012-11-23 09:55 wangkangluo1 阅读(5673) 评论(1) 推荐(1) 编辑
摘要:http://developer.51cto.com/art/201002/182202.htmC++编程语言中的模板应用在一定程度上大大提高了程序开发的效率。我们在这篇文章中为大家详细讲解一下有关C++模板的基本概念,希望初学者们可以通过本文介绍的内容充分掌握这方面的知识。前段时间重新学习C++,主要看C++编程思想和C++设计新思维。对模版的使用有了更进一层的了解,特总结如下:下面列出了C++模板的常用情况:1. C++模板类静态成员template< typenameT>structtestClass { staticint_data; }; template< > 阅读全文
posted @ 2012-11-23 09:52 wangkangluo1 阅读(1840) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.cppblog.com/newcnzz/archive/2012/09/29/192428.htmlC++提供了四个转换运算符:const_cast <new_type> (expression)static_cast <new_type> (expression)reinterpret_cast <new_type> (expression)dynamic_cast <new_type> (expression)dynamic_cast: 通常在基类和派生类之间转换时使用; static_cast: 一般的转换, 阅读全文
posted @ 2012-10-07 05:54 wangkangluo1 阅读(775) 评论(0) 推荐(1) 编辑
摘要:原文链接:http://www.cppblog.com/jialisoft/archive/2012/09/26/192071.html首先展示一个最简单的单例模式例子,代码如下:classNetworkService{public://对外提供的唯一方法函数,用于获取唯一的对象指针staticNetworkService*GetInstance(){if(m_pInstance==NULL){m_pInstance=newNetworkService();}returnm_pInstance;}private://构造函数设置为私有,禁止用户另外创建对象NetworkService();st 阅读全文
posted @ 2012-10-07 05:44 wangkangluo1 阅读(489) 评论(0) 推荐(0) 编辑
摘要:原文链接:http://www.cnblogs.com/zhangpengshou/archive/2008/10/19/1314424.htmla Array数组b BOOL (int)布尔(整数)by Unsigned Char (Byte)无符号字符(字节)c Char字符(字节)cb Count of bytes字节数cr Color reference value颜色(参考)值cx Count of x (Short) x的集合(短整数)dw DWORD (unsigned long)双字(无符号长整数)f Flags (usually multiple bit values)标志( 阅读全文
posted @ 2012-10-07 05:36 wangkangluo1 阅读(1396) 评论(0) 推荐(0) 编辑
摘要:原文链接前言:c++的文件流处理其实很简单,前提是你能够理解它。文件流本质是利用了一个buffer中间层。有点类似标准输出和标准输入一样。c++ IO的设计保证IO效率,同时又兼顾封装性和易用性。本文将会讲述c++文件流的用法。有错误和疏漏的地方,欢迎批评指证。需要包含的头文件: <fstream>名字空间: std也可以试用<fstream.h>fstream提供了三个类,用来实现c++对文件的操作。(文件的创建,读写)。 ifstream -- 从已有的文件读 ofstream -- 向文件写内容 fstream - 打开文件供读写支持的文件类型实... 阅读全文
posted @ 2012-06-02 23:03 wangkangluo1 阅读(8838) 评论(0) 推荐(0) 编辑
摘要:原文链接一BOOSTBoost带领你远远地超越了C++标准库,它使得C++编程更优雅、更有活力、更高产。(引自:Beyond the C++ Standard Library: An Introduction to Boost)(慢慢体会哦!)二参考主要:boost的在线document:http://boost.org/libs/libraries.htm唯一的关于boost的book:Beyond the C++ Standard Library: An Introduction to Boost其他:http://www.boost.org/heroboy2000:http://blog 阅读全文
posted @ 2012-05-28 16:25 wangkangluo1 阅读(3013) 评论(0) 推荐(0) 编辑
摘要:原文链接有三种情况,会以一个object的内容作为另一个class object的初值。最明显的一种情况当然就是对一个object做明确得初始化操作,像这样:class X{…};X x;//明确地以一个object的内容作为另一个class object的初值X xx = x;另两种情况是当object被当做参数交给某个函数时,以及当函数传回一个class object时。假设class设计者明确定义了一个拷贝构造函数,像下面这样:X::X( const X& x );Y::Y( const Y& y, int = 0 );那么在大部分情况下,当一个class object以 阅读全文
posted @ 2012-05-28 16:23 wangkangluo1 阅读(964) 评论(0) 推荐(0) 编辑
摘要:原文链接class类中默认会实现4个函数,分别为默认构造函数,拷贝构造函数,析构函数和=运算符重载#include <iostream>using namespace std;class myString{ public: myString(const char *str=NULL); myString(const myString &other); ~myString(); myString & operator=(const myString &other); showString(); private: ... 阅读全文
posted @ 2012-05-28 13:42 wangkangluo1 阅读(666) 评论(0) 推荐(0) 编辑
摘要:原文链接尽量用const和inline而不用#define也称为:尽量用编译器而不用预处理。原因:(1)#define ASPECT_RATIO 1.653编译前预处理程序会将ASPECT_RATIO替换为1.653,编译出错时只会指出1.653,而无法跟踪ASPECT_RATIO,不便于调试(2)#define max(a,b) ((a) > (b) ? (a) : (b))有可能出错:int a = 5, b = 0;max(++a, b);// a的值增加了2次max(++a, b+10); // a的值只增加了1次解决方法:(1)用const而不用#define:const do 阅读全文
posted @ 2012-05-28 12:54 wangkangluo1 阅读(401) 评论(0) 推荐(0) 编辑
摘要:原文链接指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。1、指针和引用的定义在深入介绍之前我们首先来看一下指针和引用的定义、指针和引用的区别,然后分别针对指针和引用展开讨论,深入细节为何有这些差异。指针的权威定义:In a declarationT DwhereDhas the form*cv-qualifier-seqoptD1And the ty 阅读全文
posted @ 2012-05-28 10:50 wangkangluo1 阅读(342) 评论(1) 推荐(0) 编辑
摘要:原文链接按照默认规定,只有一个参数的构造函数也定义了一个隐式转换,将该构造函数对应数据类型的数据转换为该类对象,如下面所示:class String {String ( const char* p );//用C风格的字符串p作为初始化值//…}String s1 = “hello”;//OK 隐式转换,等价于String s1 = String(“hello”);但是有的时候可能会不需要这种隐式转换,如下:class String { String ( int n );//本意是预先分配n个字节给字符串String ( const char* p );//用C风格的字符串p作为初始化值//…} 阅读全文
posted @ 2012-05-28 10:47 wangkangluo1 阅读(358) 评论(0) 推荐(1) 编辑
摘要:原文链接Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见Inside the C++ Object Model ,Addison Wesley 1996)class 阅读全文
posted @ 2012-05-28 10:44 wangkangluo1 阅读(605) 评论(1) 推荐(0) 编辑
摘要:原文链接在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming, GP),后来为泛型而设计的模版,被发现及证明是图灵完备的,因此使C++亦可支持模版元编程范式(template metaprogramming, TMP)。C++继承了C的特色,既为高级语言,又含低 阅读全文
posted @ 2012-05-28 10:40 wangkangluo1 阅读(316) 评论(0) 推荐(0) 编辑
摘要:原文链接使用throw抛出异常本人节选自《21天学通C++》一书 抛出异常(也称为抛弃异常)即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:throw 表达式; 如果在try语句块的程序段中(包括在其中调用的函数)发现了异常,且抛弃了该异常,则这个异常就可以被try语句块后的某个catch语句所捕获并处理,捕获和处理的条件是被抛弃的异常的类型与catch语句的异常类型相匹配。由于C++使用数据类型来区分不同的异常,因此在判断异常时,throw语句中的表达式的值就没有实际意义,而表达式的类型就特别重要。【范例20-2】处理除数为0的异常 阅读全文
posted @ 2012-05-28 10:35 wangkangluo1 阅读(510) 评论(0) 推荐(0) 编辑
摘要:原文链接:在线手册第一章 从C转向C++条款1:尽量用const和inline而不用#define条款2:尽量用而不用条款3:尽量用new和delete而不用malloc和free条款4:尽量使用c++风格的注释第二章 内存管理条款5:对应的new和delete要采用相同的形式条款6:析构函数里对指针成员调用delete条款7:预先准备好内存不够的情况条款8: 写operator new和operator delete时要遵循常规条款9: 避免隐藏标准形式的new条款10: 如果写了operator new就要同时写operator delete第三章 构造函数,析构函数和赋值操作符条款11: 阅读全文
posted @ 2012-05-28 10:26 wangkangluo1 阅读(526) 评论(0) 推荐(0) 编辑
摘要:原文链接一 C语言中存在着两种类型转换:隐式转换和显式转换隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成char ch;int i = ch;显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加char *pc = (char*)pb;void *ps = (void*)pa;二 C++中的类型转换 通过这两种方式,C语言中大部分的类型转换都可以顺利进行。至于能不能进行转换,转换后的结果如何,编译器不管需要用户自己去控制。 C++继承了C中的隐式和显式转换的方式。但这种转换并不是安全和严格的,加上C++本身对象模型的复杂性,C++增加了四个显示转.. 阅读全文
posted @ 2012-05-14 02:10 wangkangluo1 阅读(797) 评论(0) 推荐(0) 编辑
摘要:原文链接在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。1)作用域与命名空间l相关概念与命名空间相关的概念有:n声明域(declaration region)—— 声明标识符的区域。如在函数外面声明的全局变量,它的声明域为声明所在的文件。在函数内声明的局部变 阅读全文
posted @ 2012-05-13 20:12 wangkangluo1 阅读(12574) 评论(1) 推荐(3) 编辑

点击右上角即可分享
微信分享提示