05 2013 档案

摘要:类默认生成的函数(当你自己不定义这些函数时): 一个拷贝构造函数,一个赋值运算符,一个析构函数,一对取址运算符、一个缺省构造函数。 class Empty {public: Empty(); // 缺省构造函数 Empty(const Empty& rhs); // 拷贝构造函数 ~Empty(); // 析构函数 ---- 是否 // 为虚函数看下文说明 Empty& operator=(c... 阅读全文
posted @ 2013-05-30 12:09 helloweworld 阅读(140) 评论(0) 推荐(0)
摘要:这里向下转换指的是“将基类指针强制转换为派生类”,不建议这么做,为什么?根本在访问权限,即派生类对象可以做的事,基类对象不一定能做,如果把基类指针强制转换为派生类,那么基类就可以做派生类独有的事情了。 阅读全文
posted @ 2013-05-29 22:46 helloweworld 阅读(145) 评论(0) 推荐(0)
摘要:An alternative to the Handle class approach is to make Person a special kind of abstract base class called a Protocol class. Bydefinition, a Protocol class has no implementation; its raison d'être is ... 阅读全文
posted @ 2013-05-29 22:33 helloweworld 阅读(307) 评论(0) 推荐(0)
摘要:文中给出解释“如果缺省参数值被动态绑定,编译器就必须想办法为虚函数在运行时确定合适的缺省值,这将比现在采用的在编译阶段确定缺省值的机制更慢更复杂。做出这种选择是想求得速度上的提高和实现上的简便”。 缺省参数在编译时绑定,而不是在运行时绑定,主要是为了高效运行。 阅读全文
posted @ 2013-05-29 22:22 helloweworld 阅读(167) 评论(0) 推荐(0)
摘要:为实现进程模型,操作系统维护一张进程表,每个进程占用一个进程表项,即进程控制块。 PCB包含了进程状态的重要信息。包括状态(运行、就绪、阻塞)、进程优先级、进程ID、父进程、进程组、文件描述符等。 在不同的操作系统中对进程的控制和管理机制不同,PCB中的信息多少也 不一样,通常PCB应包含如下一些信息。 1、进程标识符name: 每个进程都必须有一个唯一的标识符,可以是字符串,也可以是一个数 字... 阅读全文
posted @ 2013-05-29 22:18 helloweworld 阅读(518) 评论(0) 推荐(0)
摘要:在UNIX中,进程和它所有的子女及后裔共同组成一个进程组。当用户从键盘发出一个信号时,该信号被送给当前与键盘相关的进程组里的所有成员,每个进程分别捕捉该信号、忽略该信号或采取动作。 Windows中没有进程层次的概念,所有进程的地位是相等的。 阅读全文
posted @ 2013-05-29 22:06 helloweworld 阅读(173) 评论(0) 推荐(0)
摘要:A program file was not specified in the launch configuration. Click Project -> Properties; Select run/debug settings, and then the current configuration on the right pane, click edit; In the c/c++... 阅读全文
posted @ 2013-05-29 20:22 helloweworld 阅读(1069) 评论(0) 推荐(0)
摘要:前言:迭代的是人,递归的是神。——L. Peter Deutsch展开递归调用,是分析递归的利器。进行数学归纳,是使用递归的利器。对初学者而言,讲一大堆理论,不如举一个例子。本系列分三篇分析及使用递归。第一篇——递归调用的分析第二篇——递归调用的初步使用第三篇——递归调用的进阶使用一、递归调用的一般结构。递归函数一般有如下特征:recursionFun(){ //第一部分:递归结束条件,前期处理。 if 递归结束条件 return; //第二部分:递归调用。 recusionFun(); //第三部分:递归调用后期处理,也可能有return语句。}二、递归调用的4种形式。下面看递归调用的4种形 阅读全文
posted @ 2013-05-28 23:26 helloweworld
摘要:该条款最终结论:任何条件下都要禁止重新定义继承而来的非虚函数。 或者说,应该避免“隐藏”现象的发生(所谓隐藏,即派生类重新定义基类的非虚函数)。另一个概念“覆盖”即对虚函数的重新实现的发生是正常的。 从继承和实现的角度看,虚函数是一个接口,实现可以不同,或者说特性可以不同。但是非虚函数表示一种固有的不变的特性,所以不要改变这个不变的特性,否则违背公有继承“是一个”的原则。 class A{pu... 阅读全文
posted @ 2013-05-28 12:08 helloweworld 阅读(386) 评论(0) 推荐(0)
摘要:注:下面所说虚函数指不是纯虚函数的普通虚函数。 这里所说的接口继承,指的是继承基类的纯虚函数;实现继承指的是继承基类的虚函数或者普通函数。 本条款实际上讲的是使用纯虚函数还是虚函数的问题。 这个条款概括起来就是: 如果基类不需要实现,实现在派生类中,那么基类中定义纯虚函数; 如果基类有默认实现,某些派生类可能会重新定义实现,那么基类中定义虚函数; 如果派生类完全继承基类的实现,不需任何改变,那... 阅读全文
posted @ 2013-05-28 11:28 helloweworld 阅读(157) 评论(0) 推荐(0)
摘要:class Person { ... }; class Student: // 这一次我们 private Person { ... }; // 使用私有继承 void dance(const Person& p); // 每个人会跳舞 void study(const Student& s); // 只有学生才学习 Person p; // p是一个人Student s; // s是一个... 阅读全文
posted @ 2013-05-28 10:52 helloweworld 阅读(176) 评论(0) 推荐(0)
摘要:要理解进程上下文,先看上下文的英文单词——context,context是上下文/环境/来龙去脉的意思,对进程而言,就是进程执行时的环境,那么环境又是个啥?环境指该进程的状态,包括寄存器变量,进程打开的文件,内存信息等。 知道了进程上下文,进一步阐释上下文切换。 LINUX完全注释中的一段话: 当一个进程在执行时,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容被称 为该进程的上下文。当内核... 阅读全文
posted @ 2013-05-27 17:35 helloweworld 阅读(393) 评论(0) 推荐(0)
摘要:该条款实际上讲的是何时使用继承,何时使用模板。 给了两个例子,即采用何种方式实现Stack类和Cat类。 使用模板实现Stack,使用继承实现Cat,为什么? 因为Stack每个对象的行为都一样,改变Stack的参数类型并不会改变行为; 而对于Cat,每个Cat对象行为不一致,需要用虚函数实现不同的行为。 条款最后给出结论: · 当对象的类型不影响类中函数的行为时,就要使用模板来生成这样一组类... 阅读全文
posted @ 2013-05-27 15:18 helloweworld 阅读(241) 评论(0) 推荐(0)
摘要:1、何谓批处理操作系统? 用户准备好要执行的程序、数据和控制作业执行的说明书,由操作员输入到计算机系统中等待处理。操作系统选择作业并按作业说明书的要求自动控制作业的执行。采用这种批量化处理作业的操作系统称为批处理操作系统。 批处理是针对作业而言的,所谓批,是指将批量作业放入操作系统,操作系统根据作业调度算法对作业进行处理。 和批处理有关联的问题是作业调度算法问题。 1.什么是“多道程序设计”技术... 阅读全文
posted @ 2013-05-26 21:56 helloweworld 阅读(1248) 评论(0) 推荐(0)
摘要:很容易想到的实现方式是将类的构造函数设为私有的。 即 class A{private: A(){};};则类A不能被继承(继承后不能实例化对象,那继承后的类还有什么意义?)。上面的实现方式使得类A也不能实例化一个对象,即A a;不能通过编译。那么怎么让一个类除了不能实例化对象外,其他操作都一样呢?先来看下面的例子,class A{friend class B;private: A(){};};cl... 阅读全文
posted @ 2013-05-26 14:15 helloweworld 阅读(329) 评论(0) 推荐(0)
摘要:红黑树是一种特殊的平衡二叉搜索树,为什么set、map的实现要采用红黑树? 为什么不用heap? set 、map都要求自动排序,heap也能实现自动排序啊,为什么不用heap? 我认为最重要的原因:STL中heap是基于vector实现的,而vector是连续线性空间,这不符合set的集合性质! 为什么不用二叉搜索树? 可能不平衡,造成搜索深度过大! 为什么不用平衡二叉搜索树(AVL树)? ... 阅读全文
posted @ 2013-05-25 15:43 helloweworld 阅读(3683) 评论(0) 推荐(0)
摘要:仿函数是什么 仿函数又称函数对象,其本质是类的对象,但为什么带“函数”二字呢,因为该类重载了()运算符,使得对象使用()时类似使用函数。 如: greater<int> ig; //比较大小。greater<int>是一个模板类,ig是该类的对象,这里称ig为仿函数或函数对象。cout << ig(5, 2) << endl; //之所以称呼ig时带“函数”二字,是因为ig使用()操作符时类似... 阅读全文
posted @ 2013-05-25 15:42 helloweworld 阅读(307) 评论(0) 推荐(0)
摘要:一、迭代器用来干嘛的? 本质是指针,用来遍历访问容器中元素的。 STL实现了容器和算法的分离,如何实现的呢,答曰用类模板和函数模板,也可理解为所谓的泛化。那么容器和算法又是怎样结合在一起的呢,答曰迭代器——使用算法时,传给算法的是迭代器! 二、迭代器常用运算。 所有标准库容器的迭代器都提供*iter iter->mem ++iter --iter iter1 == iter2 iter1 != ... 阅读全文
posted @ 2013-05-23 23:07 helloweworld 阅读(211) 评论(0) 推荐(0)
摘要:一、关联式容器有哪些,如何实现的。 标准的STL中关联容器有set map multiset multimap,这四种容器都是基于红黑树实现的。 使用这些容器需要包含#include <set> #include <map> SGI STL还提供了标准之外的以基于hash table实现的的hash_set hash_map hash_multiset hash_multimap. 使用这些容... 阅读全文
posted @ 2013-05-22 20:52 helloweworld 阅读(605) 评论(0) 推荐(0)
摘要:float f = -8.25; int *pi = (int*)&f; printf("%d\n", *pi);输出-1056702464,为什么呢? 阅读全文
posted @ 2013-05-20 20:33 helloweworld 阅读(453) 评论(0) 推荐(0)
摘要:多线程MultiThreading.c #include #include #include #include #define MAX 10 pthread_t thread[2];//线程ID pthread_mutex_t mut;//定义互斥锁变量 int number=0, i; v... 阅读全文
posted @ 2013-05-18 13:52 helloweworld 阅读(252) 评论(0) 推荐(0)
摘要:1、因为进程有自己独立的内存地址空间,而线程共享进程的内存地址空间。 2、另一个看进程和线程的角度是进程模型基于两类不同的概念:资源的组织和执行。 进程是用于组织资源的单位,进程将相关的资源组织在一起,这些资源包括:内存地址空间,程序,数据等,将这些以进程的形式组织起来可以使得操作系统管理这些资源更为容易。 而线程,是每一个进程中执行的一个条线。线程虽然共享进程中的大多数资源,但线程也需要... 阅读全文
posted @ 2013-05-17 10:43 helloweworld 阅读(192) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2013-05-16 21:46 helloweworld 阅读(129) 评论(0) 推荐(0)
摘要:举例,android当一条记录产生后,通知两个对象,一个插入记录,一个设置闹钟。 阅读全文
posted @ 2013-05-16 16:43 helloweworld 阅读(153) 评论(0) 推荐(0)
摘要:简单工厂package com.lucas.ModelSimpleFactory;public abstract class Operation { public double A = 0; public double B = 0; public double getA() { return A; } public void setA(double a) { A = a; } public ... 阅读全文
posted @ 2013-05-16 11:50 helloweworld 阅读(160) 评论(0) 推荐(0)
摘要:组合关系(强拥有关系,生命周期相同,如鸟和翅膀)public class TestOne {}public class TestTwo { private TestOne test1; public TestTwo() { // TODO Auto-generated constructor stub test1 = new TestOne(); }}聚合关系(弱拥有关系,如公司和员工,员... 阅读全文
posted @ 2013-05-15 22:09 helloweworld 阅读(161) 评论(0) 推荐(0)
摘要:Target.java package com.lucas.ModelAdapter;public abstract class Target { public void Request() { System.out.println("Target request!"); }}Adaptee.javapackage com.lucas.ModelAdapter;public class A... 阅读全文
posted @ 2013-05-15 21:33 helloweworld 阅读(152) 评论(0) 推荐(0)
摘要:这里我安装的是Amateras插件(其他试了很多插件没成功)。一、到下面网址下载Amaterashttp://sourceforge.jp/projects/amateras/releases/?package_id=4435二、解压下载的文件,将 3个*.jar文件 拷贝到 ..\eclipse\plugins 文件夹下。三、重启eclipse,ok!使用如下:1、"File"->"New"->"Other"->"AmaterasUML"->"Class diagram" 阅读全文
posted @ 2013-05-15 17:37 helloweworld 阅读(404) 评论(0) 推荐(0)
摘要:参考:http://blog.csdn.net/v_july_v/article/details/7382693 set/map/multiset/multimap都是基于RB-tree之上,所以有自动排序功能,而hash_set/hash_map/hash_multiset/hash_multimap都是基于hashtable之上,所以不含有自动排序功能,至于加个前缀multi_无非就是允许键值... 阅读全文
posted @ 2013-05-12 19:31 helloweworld 阅读(387) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2013-05-10 17:24 helloweworld 阅读(117) 评论(0) 推荐(0)
摘要:#include <iostream>using namespace std;class A{ int a; virtual void aa() {}};class B : virtual public A{ int b;};class C : virtual public A{ int c;};class D : public B, public C{ int d;};int main(){ c... 阅读全文
posted @ 2013-05-10 17:10 helloweworld 阅读(145) 评论(0) 推荐(0)
摘要:普通类的sizeof 类比struct 注意字节对齐#include <iostream>using namespace std;class A{public: int data; char p;};int main(){ cout << sizeof (A) << endl; //字节对齐,输出8. return 0;}含有虚函数的类的sizeof#include <iostream>u... 阅读全文
posted @ 2013-05-09 21:42 helloweworld 阅读(241) 评论(0) 推荐(0)
摘要://============================================================================// Name : HelloWorldcpp.cpp// Author : Lucas// Version :// Copyright : @Lucas// Description : Hello Worl... 阅读全文
posted @ 2013-05-08 12:36 helloweworld 阅读(191) 评论(0) 推荐(0)
摘要:Effective C++ 条款33:明智地使用内联 1、inline就像register,只是对编译器的建议,编译器并不一定接受该建议。 2、“一般来说,实际编程时最初的原则是不要内联任何函数,除非函数确实很小很简单”。 3、构造和析构函数看起来短小,看起来很适合内联,其实不然! 因为编译器在构造、析构对象时做了很多事,增加了额外的代码,如 // 一个Derived构造函数的可能的实现 ... 阅读全文
posted @ 2013-05-08 11:44 helloweworld 阅读(553) 评论(0) 推荐(0)
摘要:回答此问题时,照下面顺序回答: 1、malloc free是库函数,new delete是运算符。 2、malloc free只是申请/释放内存,不能构造和析构对象;new free可以申请/释放内存,构造/析构对象。 3、举例说明第2点: #include <iostream>#include <stdlib.h>using namespace std;class Test{public: ... 阅读全文
posted @ 2013-05-07 11:12 helloweworld 阅读(228) 评论(0) 推荐(0)
摘要:是什么 一个类模板,解决delete发生之前发生异常从而导致内存泄露的问题。 使用时需要包含memory头文件。 void f(){ int *ip = new int(42); ...//如果这里发生异常,则下面的delete可能不会执行,导致内存泄露。 delete ip;}#include <iostream>#include <memory>using namespace std;vo... 阅读全文
posted @ 2013-05-07 10:08 helloweworld 阅读(184) 评论(0) 推荐(0)
摘要:为什么需要智能指针? 智能指针出现的背景是什么? 为了解决类中包含指针时的可能会导致的内存泄漏问题。 智能指针是如何实现的? 通过引用计数实现,引用计数的实现有两种:一辅助类,二句柄类。 阅读全文
posted @ 2013-05-06 16:01 helloweworld 阅读(142) 评论(0) 推荐(0)
摘要:转载http://www.cppblog.com/mymsdn/archive/2011/11/28/74221.html 从广义上,能够从一个数值拎起一大堆数据的东西都可以叫做句柄。句柄的英文是"Handle",本义就是"柄",只是在计算机科学中,被特别地翻译成"句柄",其实还是个"柄"。从一个小东西拎起一大堆东西,这难道不像是个"柄"吗? 然后,指针其实也是一种"句柄",只是由于指针同时拥有更... 阅读全文
posted @ 2013-05-05 18:35 helloweworld 阅读(199) 评论(0) 推荐(0)
摘要:内存分配方式有三种: (1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指 令集中,效率很高,但是分配的内存容量有限。 (3) 从堆上分配,亦称动态内存分配。程序在运行的时候用ma... 阅读全文
posted @ 2013-05-05 13:19 helloweworld 阅读(324) 评论(0) 推荐(0)
摘要://============================================================================// Name : Testcpp.cpp// Author : Lucas// Version :// Copyright : @Lucas// Description : 先入栈的在高地址。//=====... 阅读全文
posted @ 2013-05-05 12:27 helloweworld 阅读(293) 评论(0) 推荐(0)
摘要:上一次运行的.exe没有被关闭,可到进程管理器里关闭gdb。 阅读全文
posted @ 2013-05-05 12:16 helloweworld 阅读(389) 评论(0) 推荐(0)
摘要:解决方案:将problem栏中所有的记录删除掉即可。 阅读全文
posted @ 2013-05-05 11:30 helloweworld 阅读(586) 评论(0) 推荐(0)
摘要:先CTRL+B(Project->Build all)再CTRL+F11; 或 http://cboard.cprogramming.com/cplusplus-programming/147432-eclipse-cdt-binary-file-not-found.html run----> run configurations---->main--->c/c++ Application--... 阅读全文
posted @ 2013-05-03 21:58 helloweworld 阅读(209) 评论(0) 推荐(0)