C++
hanchaoman
这个作者很懒,什么都没留下…
展开
-
C++中public,protected,private访问小结
<br />第一:private,public,protected的访问范围: <br /> <br />private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. <br />protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 <br />public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问<br />注:友元函数包括两种:设为友元的全局函数,设为友元类中的成员函数<br /><br /转载 2010-08-12 21:58:00 · 1078 阅读 · 0 评论 -
面向对象UML中类关系
如果你确定两件对象之间是is-a的关系,那么此时你应该使用继承;比如菱形、圆形和方形都是形状的一种,那么他们都应该从形状类继承而不是聚合。如果你确定两件对象之间是has-a的关系,那么此时你应该使用聚合;比如电脑是由显示器、CPU、硬盘等组成的,那么你应该把显示器、CPU、硬盘这些类聚合成电脑类,而不是从电脑类继承。类间的关系 网上关于此类的讨论非常多,发现对于该问题的理解各有各的说法,而原创 2011-06-15 15:32:00 · 807 阅读 · 0 评论 -
boost
<br />www.oschina.net/bbs/thread/8612原创 2010-11-12 17:01:00 · 683 阅读 · 0 评论 -
组合,关联,聚合的区别
类间关系在类图中,除了需要描述单独的类的名称、属性和操作外,我们还需要描述类之间的联系,因为没有类是单独存在的,它们通常需要和别的类协作,创造比单独工作更大的语义。在UML类图中,关系用类框之间的连线来表示,连线上和连线端头处的不同修饰符表示不同的关系。类之间的关系有继承(泛化)、关联、聚合和组合。(1)继承:指的是一个类(称为子类)继承另外的一个类(称为基类)的功能,并增加它自己的新功能的能力,继承是类与类之间最常见的关系。类图中继承的表示方法是从子类拉出一条闭合的、单键头(或三角形)的实线指向基类。例如原创 2010-12-29 15:35:00 · 993 阅读 · 1 评论 -
static_cast, dynamic_cast, reinpreter_cast, const_cast的用法
<br />转自]《c++强制转化》<br />http://topic.csdn.net/t/20041127/15/3593843.html<br />1. static_cast<br />用法:static_cast < type-id > ( expression ) <br />该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法:<br />①用于类层次结构中基类和子类之间指针或引用的转换。<br /> 进行上行转换(把子类的指转载 2010-12-29 14:03:00 · 2708 阅读 · 0 评论 -
返回const指针与返回const引用区别
<br /><br /> const是C语言的一种关键字,起受保护,防止以外的变动的作用!可以修饰变量,参数,返回值,甚至函数体。const可以提高程序的健壮性,你只管用到你想用的任何地方。<br />(一)const修饰参数。const只能修饰输入参数。<br /> 1、如果输入参数是指针型的,用const修饰可以防止指针被意外修改。<br /> 2、如果参数采用值传递的方式,无需const,因为函数自动产生临时变量复制该参数。<br /> 3、非内部数据类型的参数,需要临时对象复制原创 2010-12-27 23:35:00 · 9330 阅读 · 1 评论 -
typeid详解
<br /> 在揭开typeid神秘面纱之前,我们先来了解一下RTTI(Run-Time Type Identification,运行时类型识别),它使程序能够获取由基指针或引用所指向的对象的实际派生类型,即允许“用指向基类的指针或引用来操作对象”的程序能够获取到“这些指针或引用所指对象”的实际派生类型。在C++中,为了支持RTTI提供了两个操作符:dynamic_cast和typeid。<br /> dynamic_cast允许运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转化类原创 2010-12-26 15:48:00 · 954 阅读 · 0 评论 -
dynamic_cast
<br /> 用法:dynamic_cast < type-id > ( expression ) <br /> 该运算符把expression转换成type-id类型的对象。Type-id必须是类的指针、类的引用或者void *; <br /> 如果type-id是类指针类型,那么expression也必须是一个指针,如果type-id是一个引用,那么expression也必须是一个引用。 <br /> dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。 <转载 2010-12-26 15:17:00 · 643 阅读 · 0 评论 -
C++的运算符重载
<br /> C++中预定义的运算符的操作对象只能是基本数据类型。但实际上,对于许多用户自定义类型(例如类),也需要类似的运算操作。这时就必须在C++中重新定义这些运算符,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。运算符重载的实质是函数重载,它提供了C++的可扩展性,也是C++最吸引人的特性之一。 <br /> 运算符重载是通过创建运算符函数实现的,运算符函数定义了重载的运算符将要进行的操作。运算符函数的定义与其他函数的定义类似,惟一的区别是运算符函数的函数名是由关键字operator原创 2010-12-13 20:53:00 · 639 阅读 · 0 评论 -
c++自定义异常处理机制
<br /> 这两天我写了一个测试c++异常处理机制的例子,感觉有很好的示范作用,在此贴出来,给c++异常处理的初学者入门。本文后附有c++异常的知识普及,有兴趣者也可以看看。<br /><br />下面的代码直接贴到你的console工程中,可以运行调试看看效果,并分析c++的异常机制。<br /> #include "stdafx.h"<br />#include<stdlib.h><br />#include<crtdbg.h><br />#include <iostream>原创 2010-12-01 20:45:00 · 5801 阅读 · 0 评论 -
c++异常处理机制
<br />c++异常处理机制<br /><br />C++异常处理机制是一个用来有效地处理运行错误的非常强大且灵活的工具,它提供了更多的弹性、安全性和稳固性,克服了传统方法所带来的问题.<br /><br />异常的抛出和处理主要使用了以下三个关键字: try、 throw 、 catch 。<br /><br />抛出异常即检测是否产生异常,在C++中,其采用throw语句来实现,如果检测到产生异常,则抛出异常。该语句的格式为:<br />throw 表达式;<br />如果在try语句块的程序段中(包原创 2010-09-29 14:15:00 · 11736 阅读 · 1 评论 -
C++构造函数初始化列表
<br /><br /> 在使用C++编程的过程当中,常常需要对类成员进行初始化,通常的方法有两种:<br />第一种方法:CMYClass::CSomeClass(){ x=0; y=1;}第二种方法:CSomeClass::CSomeClass() : x(0), y(1){}本文将要探讨这两种方法的异同以及如何使用这两种方法。<br /> 从技术上说,第二种方法比较好,但是在大多数情况下,两者实际上没有什么区别。第二种语法被称为成员初始原创 2010-09-26 15:06:00 · 3199 阅读 · 1 评论 -
C++ vitural关键字
<br /><br />Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Base的print函数。这是面向对象中的多态性的体现。(关于虚拟机制是如何实现的,参见In原创 2010-09-06 22:26:00 · 2060 阅读 · 0 评论 -
C++ 命名空间 using namespace
<br /><br />using namespace std;用的并不少! <br />--------------------------------------------------------------- <br /><br />实际上就是告诉编译器,你类型是什么,在哪能找到。 <br /><br />常用的是using namespace std,就是说用C++的标准名字空间。 <br /><br />你也可以引用你自己的名字空间。比如说: <br /><br />impor原创 2010-09-06 15:57:00 · 1442 阅读 · 0 评论 -
C++主题——成员初始化列表
<br /> C++成员初始化列表<br /> <br />C++为类中提供类成员的初始化列表<br />类对象的构造顺序是这样的:<br />1.分配内存,调用构造函数时,隐式/显示的初始化各数据成员<br />2.进入构造函数后在构造函数中执行一般计算<br />使用初始化列表有两个原因:<br />1.必须这样做:<br /> 如果我们有一个类成员,它本身是一个类或者是一个结构,而且这个成员它只有一个带参数的构造函数,而没有默认构造函数,这时要对这个类成员进行初始化,就必须调用这个类成原创 2010-09-14 19:12:00 · 648 阅读 · 0 评论 -
C/C++宏的使用总结
宏替换是C/C++系列语言的技术特色,C/C++语言提供了强大的宏替换功能,源代码在进入编译器之前,要先经过一个称为“预处理器”的模块,这个模块将宏根据编译参数和实际编码进行展开,展开后的代码才正式进入编译器,进行词法分析、语法分析等等。 我们常用的宏替换主要有这么几个类型。1.宏常量 在ACM等算法竞赛中,经常会把数组的最大下标通过宏定义的方法给出,以方便调试,例如:原创 2013-04-16 17:02:19 · 18076 阅读 · 2 评论