- 博客(13)
- 资源 (7)
- 收藏
- 关注
原创 虚函数与动态绑定的那点事
面向对象编程的概念1)多态:简单理解就是多种形态,通过继承而相关联的类型,特别在运行的情况下,对象可能是基类也可能派生类类型1)继承:能够对类型之间的关系建模,共享公共的东西,仅仅特化本质上不同的东西。定义为virtual的函数是基类期待派生类重新定义的,基类不希望派生类继承的则定义为非虚函数,这样类就有虚函数与非虚函数之分2)动态绑定:使程序使用继承层次中任意类型的对象,无需关心具体的类型。在C++,通过引用或者指针调用虚函数,发生动态绑定,引用或指针既可以指向基类对象也可以指向派生类
2014-02-27 14:10:44 2974 1
原创 调用操作符和函数对象
引言什么是调用操作符和函数对象呢?就是调用操作符看起来像是调用函数,如下设计的一个类,是用来求一个整数的绝对值的,如下类struct absInt{ int operator()(int a) { return (a < 0)? -a: a; }};如下调用 int nVal = -1234; absInt abs; int nPosVal = abs.o
2014-02-25 22:46:16 1181
原创 成员操作符剖析
前面的操作符都比较一般,但是这里的调用就有点小不同了,如下设计的类(与智能指针类似)class ScrPtr{public: friend class ScreenPtr; friend class ScrPtrTest; //这个先不用管,后面我会用到 ScrPtr(screen* p):sp(p),count(1) { }; ~ScrPtr() { /*delete sp;*/
2014-02-25 22:28:05 1691
原创 下标操作符
有一个vector存储的容器,用下标操作返回容器内的元素,类设计如下:class Index{public: friend ostream& operator<<(ostream& os, const Index& org); Index(void); ~Index(void); int& operator[] (const size_t); const int& opera
2014-02-25 22:07:28 1625
原创 算法操作符和关系操作符
类设计如下:class sales_item{public: friend istream& operator>>(istream&, sales_item&); friend ostream& operator<<(ostream&, const sales_item&); friend sales_item operator+(const sales_item& sale1, c
2014-02-25 21:55:28 1057
原创 输入和输出重载操作符
类的设计如下:class sales_item{public: friend istream& operator>>(istream&, sales_item&); friend ostream& operator<<(ostream&, const sales_item&); //explicit sales_item(void); // 防止隐式转换 sales_item(v
2014-02-22 18:45:26 1583
原创 C++重载操作符
重载操作符原型:返回类型 operator操作符(形参);注意事项:(1)不能通过连接其他合法符号来创建任何新的操作符,如下是错误的: sales_item operator**(const sales_item &org); //error 不能通过连接其他合法操作符来创建任何新的操作符 (2)重载操作符必须一个具有类类型,类成员的话因为有一个默认的本类this
2014-02-22 18:45:08 1008
原创 谈VS2012平台下 += 与 ++ 的关系
今天闲来无事,再次调试这个问题,发现微软的编译器还真是奇葩,经常遇到++与+=的混合计算,如下: int a =1, b=3, c=10; int e, f; int d = 5; ++d += (e=++d) + c; (1) d +=(e=d++) + c; (2) ++d +=(e=d++) + c; (3) cout << d << “ ”<<e<< endl;分别对上述
2014-02-22 12:00:31 1203
原创 智能指针
前景摘要1)在复制控制里面,一般复制成员都是复制其值,复制指针只复制指针的地址,而不会复制指针指向的对象。2) 将一个指针复制到另一个指针时,两个指针指向同一对象,删除其中任意一个,都对另一个有硬性,特别是动态分配的内存,会导致程序崩溃。3) 如何使用指针呢?这里就牵涉几种情况:a)指针成员采取常规指针行为 :指针的缺陷但无需特殊的复制控制b)类采取智能指针行为:指针指
2014-02-21 15:07:59 952
原创 消息处理实例解说
Message处理消息,Folder存放Message消息,一个Message消息可以放入多个文件夹Folder,一个Folder可以存放多个Message按照此种方式设置了Message类插入消息,移除消息,将消息放入所有文件夹,移除所有文件夹中的消息,Folder类存放消息,移除消息class Folder;class Message{public: Message(const
2014-02-19 16:02:13 1125
原创 C++赋值操作符与析构函数
赋值操作符的定义:1)赋值操作符,就是常用变量赋值的“=”,将一个玩意赋值给另一个玩意2)默认形式:classType & operator=(const classType &);operator后面紧跟要重载的操作符就是操作符重载的默认形式;形参是本类类型的引用,默认第一个形参就是类类型对象自己的指针this;返回类型就是类类型的引用合成赋值操作符:合成赋值操作符也是采用
2014-02-18 16:44:46 1201
原创 C++复制构造函数
复制构造函数、赋值操作符、析构函数总称为复制控制复制构造函数定义:是一种特殊的构造函数,具有单个形参,该形参(常用const修饰)是对该类类型的引用用于的情况:1)初始化对象 ,根据另一个同类型的对象显式或隐式初始化它复制对象2)作为实参传给函数时,复制这个对象3)函数返回时,复制对象4)初始化顺序容器中的元素5)根据元素初始化列表初始化数组元素1. 对象的定义
2014-02-17 13:45:09 957
原创 C++构造函数
C++中构造函数是特殊的成员函数,只要定义类的新对象就会执行构造函数,构造函数是保证每个对象的数据成员具有合适的初始值。构造函数特点:1)构造函数与类同名,不能指定返回类型,且不能声明为const函数,详见const的使用2)构造函数可以重载,所以可以有多个构造函数 sales_item(void) /*const*/; sales_item(istream &is /*= ci
2014-02-13 15:43:25 945
Mini2440 Nor Flash 芯片手册(S29AL016J_00)
2013-06-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人