上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 75 下一页
摘要: 1、在一个类内部再定义另外一个类,这样的类称为嵌套类(nested class),也称为嵌套类型(nested type)。嵌套类最常用于执行类。嵌套类是独立的类,基本上与它们的外围类不相关,因此,外围类和嵌套类的对象是互相独立的。嵌套类型的对象不具备外围类所定义的成员,同样,外围类的成员也不具备嵌套类所定义的成员。示例代码template <class Type> class Queue{ //interface functions to Queue are unchangedprivate: //public members are ok: QueueItem is a pri 阅读全文
posted @ 2011-05-24 10:02 浪里飞 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 1、成员指针(pointer to member)包含类的类型以及成员的类型。成员指针只应用于类的非static成员。static类成员不是任何对象的组成部分,所以不需要特殊语法来指向static成员,static成员指针是普通指针。通过指定函数的返回类型,形参表(类型和数目,是否为const)和所属类来定义成员函数的指针。2、使用类成员的指针 类似于成员访问操作符 . 和 ->,.* 和 -> 是两个新的操作符,它们使我们能够将成员指针绑定到实际对象。这两个操作符的左操作数必须是类类型的对象或类类型的指针,右操作数是该类型的成员指针。• 成员指针解引用操作符(.*)从对象或引用获 阅读全文
posted @ 2011-05-23 17:36 浪里飞 阅读(438) 评论(0) 推荐(0) 编辑
摘要: 1、通过运行时类型识别,程序能够使用基类的指针或引用来检索这些指针或引用所指对象的实际派生类型。通过以下两种操作符提供RTTI:1)typeid操作符,返回指针或引用所指对象的实际类型。2)dynamic_cast操作符,将基类类型的引用或指针安全地转换为派生类型的指针或引用。这些操作符只为带有一个或多个虚函数的类返回动态类型信息,对于其他类型,返回静态(即编译时)类型的信息。对于带虚函数的类,在运行时执行RTTI操作符,但对于其他类型,在编译时计算RTTI操作符。2、使用动态强制类型转换要小心,只要有可能,定义和使用虚函数比直接接管类型管理好得多。3、dynamic_cast操作符1)可以使 阅读全文
posted @ 2011-05-23 11:26 浪里飞 阅读(268) 评论(0) 推荐(0) 编辑
摘要: 9、正如定位new(placement new expression)表达式是使用allocator类的construct成员的低级选择,可以使用析构函数的显式调用作为调用destroy函数的低级选择。示例代码 for (T *p = first_free; p != elements; /*empty*/) alloc.destroy(--p); //上式表达与下式表达等价 p->~T();10、显式调用析构函数是清除对象本身,并没有释放对象所占的内存;调用operator delete函数不会运行析构函数,它只释放指定的内存。11、类通过定义自己的名为operator new和ope 阅读全文
posted @ 2011-05-22 22:25 浪里飞 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 1、C++的内存分配是一种类型操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象。new表达式自动运行合适的构造函数来初始化动态分配的类类型对象。2、在每种情况下(预先分配内存以保存用户级(user-level objects)对象或者保存类的内部数据)都需要将内存分配与对象构造分离开。3、对未构造的内存中的对象进行赋值而不是初始化,其行为是未定义的。对许多类而言,这样做引起运行时崩溃。4、C++提供下面两种方法分配和释放未构造的原始内存。1)allocator 类,它提供可感知类型(type-aware)的内存分配。这个类支持一个抽象接口,以分配内存并随后使用该内存保存对 阅读全文
posted @ 2011-05-22 20:07 浪里飞 阅读(816) 评论(0) 推荐(0) 编辑
摘要: 1、通过设计模式,找到封装变化,对象间松散耦合,针对接口编程的感觉,设计易维护、易扩展、易复用、灵活性好的程序。2、通过封装,继承,多态把程序的耦合度降低。把业务逻辑与界面逻辑分开,让它们之间的耦合度下降,使他们更容易维护和扩展。3、示例代码#include "iostream"#include "string"#include "vector"//#include "functional"//#include "algorithm"using namespace std;class Opera 阅读全文
posted @ 2011-05-06 23:18 浪里飞 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 1、编写函数,实现把一个char组成的字符串循环右移n位。如abcdehi,n=2,则hiabcde。示例代码#include "iostream"using namespace std;const int MAX_LEN = 20;void LoopMove(char* cpStr, int iSteps){ //注意,在整个处理过程中,cpStr的最后字符都没有涉及处理 char cTempArray[MAX_LEN]; size_t szStrLength = strlen(cpStr); size_t in = szStrLength -iSteps; memcpy 阅读全文
posted @ 2011-05-05 17:10 浪里飞 阅读(1275) 评论(0) 推荐(0) 编辑
摘要: 1、转换字符串的输入格式为:原来字符串里的字符+该字符连续出现的个数,例如字符串:1233422222,转化为1121324125。 我们用sprintf来实现,类同printf。#include "iostream"#include "string"using namespace std;int main() {cout << "Enter the numbers: " << endl;string str;cin >> str;size_t ilength = str.length();int 阅读全文
posted @ 2011-05-03 23:45 浪里飞 阅读(488) 评论(0) 推荐(0) 编辑
摘要: 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小。首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的。 用sizeof运算符对一个类型名操作,得到的是具有该类型实体(对象)的大小。 如果 Class A; A obj; 那么sizeof(A)==sizeof(obj)。一个对象的大小大于等于所有非静态成员大小的总和。为什么是大于等于而不是正好相等呢?超出的部分主要有以下两方面:1)C++对象模型本身对于具有虚函数的类型来说,需要有一个方法为它的实体提供类型信息(RTTI)和虚函数入口,常见的方法是建立一个虚函数入口表,这个表可为相同类型的对象共享,因 阅读全文
posted @ 2011-04-30 17:36 浪里飞 阅读(1038) 评论(0) 推荐(0) 编辑
摘要: 1)无名管道:管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道;只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程)。 单独构成一种独立的文件系统:管道对于管道两端的进程而言,就是一个文件,但它不是普通的文件,它不属于某种文件系统,而是自立门户,单独构成一种文件系统,并且只存在与内存中。 数据的读出和写入:一个进程向管道中写的内容被管道另一端的进程读出。写入的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据。(有点像队列哈)#include <unistd.h>int pipe(int fd[2]) 该函数创建的管道的两端处于一个进程 阅读全文
posted @ 2011-04-26 16:43 浪里飞 阅读(4832) 评论(0) 推荐(0) 编辑
上一页 1 ··· 50 51 52 53 54 55 56 57 58 ··· 75 下一页