左边必须指向类/结构/联合/泛型类型

chainchan 2009-11-28 05:05:45
#include <iostream> 
#include <string>
using namespace std;
//Exercise Write the member function definitions of the List class that you defined for the exercises in
//16.34: Section 16.1.2 (p. 628).
//编写第 16.1.2 节习题中定义的List 类的成员函数定义。
template<class T>class List;
template<class IO> std::ostream& operator<< (std::ostream&,const List<IO>&);
template<class T>class ListItem {
friend class List<T>;
friend ostream& operator<< <T> (ostream&, const List<T>&);
ListItem(const T &t):item(t),next(0) { }
T item;
ListItem *next;
};

template <class T>
class List {
friend ostream& operator<< <T> (ostream&, const List<T>&);
public:
List():front(0),end(0) { }
//增加一对迭代器的构造函数
template<class It> List(It beg,It end):front(0),end(0) { copy_elem(beg,end); }
List(const List &L):front(0),end(0) { copy_elems(L); }
List& operator=(const List&);
~List() { destroy(); }
void insert(ListItem<T> *ptr,const T& value);
void del(ListItem<T> *ptr);
ListItem<T>* find(const T& value);
ListItem<T>* first() { return front;}
ListItem<T>* last() { return end;}
T& getElem(ListItem<T> *ptr);
bool empty() const{ return front == 0; }
//新增成员模板assign成员
template <class Iter> void assign(Iter , Iter);
private:
ListItem<T> *front,*end;
void destroy();
//copy_elems
void copy_elems(const List<T>& orig);
//重写copy_elem
template <class Iter> void copy_elem(Iter , Iter);
};

template <class T>
List<T>& List<T>::operator= (const List& orig)
{
front = end =0;
copy_elems(orig);
return *this;
}
template <class T>
void List<T>::insert(ListItem<T>* ptr , const T& value)
{
ListItem<T> *pt = new ListItem<T>(value);
if( empty() )
front = pt ;
else {
pt -> next = ptr -> next ;
ptr -> next = pt ;
}
if( ptr == end )
end = pt ;
}
template <class T>
void List<T>::del(ListItem<T> *ptr)
{
ListItem<T>*p = front;
while(p!= ptr && p!=0 && p->next != ptr) //获取ptr所指元素的前一元素的指针p
p = p -> next;
if( p != 0 ) {
if (p == ptr) {
front = ptr -> next;
}
else {
p ->next =ptr ->next;
}
if(ptr == end)
end = p -> next;
delete ptr;
}
else
throw out_of_range("no such element");
}
template <class T>
ListItem<T>* List<T>::find(const T& value)
{
ListItem<T> *pt = front;
while(pt && pt->item!=value)
pt = pt->next;
cout<< "find the element is : " << pt->item << endl;
return pt;
}
template <class T>
T& List<T>::getElem(ListItem<T> *ptr)
{
if(!empty())
return ptr->item;
return -1;
}
template <class T>
void List<T>::destroy()
{
while(! empty())
del(front);
}
template <class T>
void List<T>::copy_elems(const List<T>& orig)
{
for(ListItem<T>*pt = orig.front; pt; pt = pt->next)
insert(end,pt->item);
}
//重写copy_elems的定义
template <class T> template <class Iter>
void List<T>::copy_elem(Iter first, Iter last)
{
while (first != last){
insert(end,first -> item);
first = first -> next;
}
insert(end,first->item);
}

//新增成员模板assign成员的定义
template<class T> template <class Iter>
void List<T>::assign(Iter bg, Iter ed)
{
destroy();
copy_elem(bg,ed);
}

//输出操作符定义
template<class IO>
ostream& operator<< (ostream& os, const List<IO>&L)
{
os << "< ";
for(ListItem<IO> *p = L.front; p; p=p->next)
os<< p->item << " ";
os << ">";
return os;
}
int main()
{
List<int> mlist,ulist;
cout<< "1"<<endl;
ListItem<int> *p = mlist.first();
cout<< "2"<<endl;
for( int i = 0 ; i!=5; ++i){
cout<< "3"<<endl;
mlist.insert(mlist.first(),i);
}
ulist = mlist;
cout<< "4"<<endl;
ulist.find(3);
cout<< "5"<<endl;
cout << mlist <<endl;
cout << ulist <<endl;
cout <<"---------new-function-test----------"<<endl;
int ai[] = {1,2,3,4,5};
List<int> qi(ai,ai+5);
cout<< "6"<<endl;
qi.find(2);
cout<< "7"<<endl;
cout << qi <<endl;
return 0 ;
}



编译结果是:
.\1128.cpp(118) : error C2227: “->item”的左边必须指向类/结构/联合/泛型类型
类型是“int *”
.\1128.cpp(23): 参见对正在编译的函数 模板 实例化“void List<T>::copy_elem<It>(Iter,Iter)”的引用
with
[
T=int,
It=int *,
Iter=int *
]
.\1128.cpp(160): 参见对正在编译的函数 模板 实例化“List<T>::List<int*>(It,It)”的引用
with
[
T=int,
It=int *
]
.\1128.cpp(119) : error C2227: “->next”的左边必须指向类/结构/联合/泛型类型
类型是“int *”
.\1128.cpp(121) : error C2227: “->item”的左边必须指向类/结构/联合/泛型类型
类型是“int *”
生成日志保存在“file://c:\Documents and Settings\My Documents\Visual Studio 2005\Projects\1128\1128\Debug\BuildLog.htm”
1128 - 3 个错误,0 个警告
========== 全部重新生成: 0 已成功, 1 已失败, 0 已跳过 ==========
...全文
3553 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
chainchan 2009-11-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 future_fighter 的回复:]
注意:
  int ai[] = {1,2,3,4,5};
    List <int>qi(ai,ai+5);

List <T> 的构造函数里面调用了copy_elem <Iter>, Iter取了item, next。明显这里的Iter不是任何一种迭代器,必须是ListItem <T>类型的。所以应该为:

  ListItem <int> ai[] = {1,2,3,4,5};
  List <int> qi(ai,ai+5);

至于那个错误提示,明显不过了: int指针哪里能访问到item,next这些玩意了!
[/Quote]

insert(ListItem<T>* ptr,const T& value);

调用的insert(end,first -> item);而这个时候item还没有被放入value

不知道我这样理解是否正确?
future_fighter 2009-11-28
  • 打赏
  • 举报
回复
注意:
int ai[] = {1,2,3,4,5};
List<int> qi(ai,ai+5);

List<T> 的构造函数里面调用了copy_elem<Iter>, Iter取了item, next。明显这里的Iter不是任何一种迭代器,必须是ListItem<T>类型的。所以应该为:

ListItem<int> ai[] = {1,2,3,4,5};
List<int> qi(ai,ai+5);

至于那个错误提示,明显不过了: int指针哪里能访问到item,next这些玩意了!
chainchan 2009-11-28
  • 打赏
  • 举报
回复
int ai[] = {1,2,3,4,5};
List<int> qi(ai,ai+5);

调用构造函数:
template<class It> List(It beg,It end):front(0),end(0) { copy_elem(beg,end); }

然后因为copy_elem这个函数,引起的编译问题:
template <class T> template <class Iter> 
void List<T>::copy_elem(Iter first, Iter last)
{
while (first != last){
insert(end,first -> item);
first = first -> next;
}
insert(end,first->item);
}


void List<int>::List(int*,int*);
这里first的类型应该是int * 指针->item 我不知道错在哪里了
fanchangyong 2009-11-28
  • 打赏
  • 举报
回复
看不到行号...
sduxiaoxiang 2009-11-28
  • 打赏
  • 举报
回复
. 对象
* 指针
Style_2009 2009-11-28
  • 打赏
  • 举报
回复
friend ostream& operator<< <T> (ostream&, const List<T>&);
这种用法还真没见过,那个<T>搞什么的啊
Style_2009 2009-11-28
  • 打赏
  • 举报
回复
template<class T> template <class Iter>
void List<T>::assign(Iter bg, Iter ed)
{
destroy();
copy_elem(bg,ed);
}
这是啥意思啊,两个template,需要两个模板参数的话就用template <class T, class Iter>
mengde007 2009-11-28
  • 打赏
  • 举报
回复
意思是说->和 . 不要乱用
Style_2009 2009-11-28
  • 打赏
  • 举报
回复
好多问题啊
visualC++2010入门经典源代码 第1章 使用visual c++ 2010编程 1.1 .net framework 1 1.2 clr 2 1.3 编写c++应用程序 3 1.4 学习windows编程 4 1.4.1 学习c++ 4 1.4.2 c++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用ide 8 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置visual c++ 2010的选项 23 1.6.6 创建和执行windows应用程序 23 1.6.7 创建windows forms应用程序 26 1.7 小结 27 1.8 本章主要内容 28 第2章 数据、变量和计算 29 2.1 c++程序结构 29 2.1.1 main()函数 36 2.1.2 程序语句 36 2.1.3 空白 38 2.1.4 语句块 38 2.1.5 自动生成的控制台程序 39 2.2 定义变量 40 2.2.1 命名变量 40 2.2.2 声明变量 41 2.2.3 变量的初始值 42 2.3 基本数据 42 2.3.1 整变量 43 2.3.2 字符数据 44 2.3.3 整修饰符 45 2.3.4 布尔 46 2.3.5 浮点 46 2.3.6 字面值 47 2.3.7 定义数据的同义词 48 2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 c++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 转换和强制转换 64 2.6.1 赋值语句中的转换 65 2.6.2 显式转换 65 2.6.3 老式的强制转换 66 2.7 auto关键字 66 2.8 查看 67 2.9 按位运算符 67 2.9.1 按位and运算符 68 2.9.2 按位or运算符 69 2.9.3 按位eor运算符 71 2.9.4 按位not运算符 71 2.9.5 移位运算符 71 2.10 lvalue和rvalue 73 2.11 了解存储时间和作用域 74 2.11.1 自动变量 74 2.11.2 决定变量声明的位置 76 2.11.3 全局变量 77 2.11.4 静态变量 80 2.12 名称空间 80 2.12.1 声明名称空间 81 2.12.2 多个名称空间 82 2.13 c++/cli编程 84 2.13.1 c++/cli特有的基本数据 84 2.13.2 命令行上的c++/cli输出 87 2.13.3 c++/cli特有的功能—— 格式化输出 88 2.13.4 c++/cli的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 c++/cli枚举 92 2.14 查看c++/cli 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3章 判断和循环 101 3.1 比较数据值 101 3.1.1 if语句 102 3.1.2 嵌套的if语句 104 3.1.3 嵌套的if-else语句 107 3.1.4 逻辑运算符和表达式 109 3.1.5 条件运算符 112 3.1.6 switch语句 113 3.1.7 无条件转移 116 3.2 重复执行语句块 117 3.2.1 循环的概念 117 3.2.2 for循环的变体 119 3.2.3 while循环 126 3.2.4 do-while循环 128 3.2.5 嵌套的循环 129 3.3 c++/cli编程 132 3.4 小结 137 3.5 练习 138 3.6 本章主要内容 138 第4章 数组、字符串和指针 139 4.1 处理多个相同的数据值 139 4.1.1 数组 140 4.1.2 声明数组 140 4.1.3 初始化数组 143 4.1.4 字符数组和字符串处理 144 4.1.5 多维数组 147 4.2 间接数据访问 150 4.2.1 指针的概念 150 4.2.2 声明指针 150 4.2.3 使用指针 152 4.2.4 初始化指针 152 4.2.5 sizeof操作符 158 4.2.6 常量指针和指向常量的指针 159 4.2.7 指针和数组 161 4.3 动态内存分配 168 4.3.1 堆的别名—— 空闲存储器 168 4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地c++库函数 174 4.5.1 查找以空字符结尾的字符串的长度 174 4.5.2 连接以空字符结尾的字符串 174 4.5.3 复制以空字符结尾的字符串 176 4.5.4 比较以空字符结尾的字符串 177 4.5.5 搜索以空字符结尾的字符串 177 4.6 c++/cli编程 179 4.6.1 跟踪句柄 180 4.6.2 clr数组 181 4.6.3 字符串 195 4.6.4 跟踪引用 203 4.6.5 内部指针 204 4.7 小结 206 4.8 练习 206 4.9 本章主要内容 207 第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数传递数组 219 5.2.4 给函数传递引用实参 222 5.2.5 使用const修饰符 224 5.2.6 rvalue引用形参 225 5.2.7 main()函数的实参 227 5.2.8 接受数量不定的函数实参 229 5.3 从函数返回值 231 5.3.1 返回指针 231 5.3.2 返回引用 233 5.3.3 函数中的静态变量 236 5.4 递归函数调用 238 5.5 c++/cli编程 240 5.5.1 接受数量可变实参的函数 241 5.5.2 main( )的实参 242 5.6 小结 243 5.7 练习 243 5.8 本章主要内容 244 第6章 程序结构(2) 245 6.1 函数指针 245 6.1.1 声明函数指针 246 6.1.2 函数指针作为实参 249 6.1.3 函数指针的数组 250 6.2 初始化函数形参 250 6.3 异常 252 6.3.1 抛出异常 253 6.3.2 捕获异常 254 6.3.3 mfc中的异常处理 255 6.4 处理内存分配错误 256 6.5 函数重载 257 6.5.1 函数重载的概念 258 6.5.2 引用和重载选择 260 6.5.3 何时重载函数 260 6.6 函数模板 261 6.7 使用decltype操作符 263 6.8 使用函数的示例 265 6.8.1 实现计算器 265 6.8.2 从字符串中删除空格 268 6.8.3 计算表达式的值 268 6.8.4 获得项值 270 6.8.5 分析数 271 6.8.6 整合程序 274 6.8.7 扩展程序 275 6.8.8 提取子字符串 277 6.8.9 运行修改过的程序 279 6.9 c++/cli编程 279 6.9.1 理解泛函数 280 6.9.2 clr版本的计算器程序 285 6.10 小结 290 6.11 练习 291 6.12 本章主要内容 292 第7章 自定义数据 293 7.1 c++中的结构 293 7.1.1 结构的概念 294 7.1.2 定义结构 294 7.1.3 初始化结构 294 7.1.4 访问结构的成员 295 7.1.5 伴随结构的智能感知帮助 298 7.1.6 rect结构 299 7.1.7 使用指针处理结构 300 7.2 数据、对象、和实例 301 7.2.1 的起源 303 7.2.2 的操作 303 7.2.3 术语 303 7.3 理解 304 7.3.1 定义 304 7.3.2 声明的对象 305 7.3.3 访问的数据成员 305 7.3.4 的成员函数 307 7.3.5 成员函数定义的位置 309 7.3.6 内联函数 309 7.4 构造函数 310 7.4.1 构造函数的概念 311 7.4.2 默认的构造函数 312 7.4.3 在定义中指定默认的形参值 314 7.4.4 在构造函数中使用初始化列表 316 7.4.5 声明显式的构造函数 317 7.5 的私有成员 318 7.5.1 访问私有成员 320 7.5.2 的友元函数 321 7.5.3 默认复制构造函数 323 7.6 this指针 325 7.7 的const对象 327 7.7.1 的const成员函数 327 7.7.2 外部的成员函数定义 328 7.8 对象的数组 329 7.9 的静态成员 331 7.9.1 的静态数据成员 331 7.9.2 的静态函数成员 334 7.10 对象的指针和引用 334 7.10.1 对象的指针 334 7.10.2 对象的引用 337 7.11 c++/cli编程 338 7.11.1 定义值 339 7.11.2 定义引用 344 7.11.3 定义引用的复制构造函数 346 7.11.4 属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解 363 8.1 析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 结构中的联合 372 8.4 运算符重载 373 …… 第9章 继承和虚函数 第10章 标准模板库 第11章 调试技术 第12章 windows编程的概念 第13章 多核编程 第14章 使用mfc编写windows程序 第15章 处理菜单和工具栏 第16章 在窗口中绘图 第17章 创建文档和改进视图 第18章 使用对话框和控件 第19章 存储和打印文档 第20章 编写自己的dll
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Visual C++ 2010入门经典(第5版)》的源代码及课后练习答案 对应的书籍资料见: Visual C++ 2010入门经典(第5版) 基本信息 原书名: Ivor Horton's Beginning Visual C++ 2010 原出版社: Wrox 作者: (美)Ivor Horton 译者: 苏正泉 李文娟 出版社:清华大学出版社 ISBN:9787302239994 上架时间:2010-12-20 出版日期:2010 年12月 开本:16开 页码:1011 版次:5-1 编辑推荐   本书针对visual c++ 2010版本做了全面更新,介绍了最新开发环境,讲述了如何使用visual c++构建真实世界的应用程序。    采用了容易理解的讲授方法,并提供了详尽的示例,旨在帮助读者掌握编程技巧 内容简介   作者ivor horton采用了容易理解的讲授方法,并提供了详尽的示例,帮助读者迅速地成为一名优秀的c++编程人员。《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新,介绍了最新的开发环境和如何使用visual c++构建现实世界中的应用程序。拥有本书,您就迈向了通往使用两种c++版本编写应用程序的成功之路,并成为一名优秀的c++编程人员。    主要内容    ·使用visual c++ 2010支持的两种c++语言技术讲述c++编程的基础知识    ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素    ·举例说明如何使用mfc开发本地windows应用程序    ·指导读者用c++和c++/cli设计和创建大量的windows应用程序    ·为帮助读者掌握编程技巧,提供了大量可运行的示例和练习 作译者   Ivor Horton是撰著Java、C和C++编程语言图书的杰出作家之一。大家一致认为,他的著作独具风格,无论是编程新手,还是经验丰富的编程人员,都很容易理解其内容。在个人实践中,Ivor Horton也是一名系统顾问。他从事程序设计教学工作已经超过了25年。   苏正泉,1995年毕业于解放军信息工程学院计算机及应用专业,高级工程师。在IT项目管理、软件开发、系统管理和网络管理方面都有非常丰富的实践经验。曾发表过多篇计算机专业论文,并翻译过多部计算机专业技术书籍。   李文娟,中国石油大学(华东)硕士,现供职于国家行政学院,工作后一直从事软件开发和软件项目管理工作,对计算机语言、计算机体系结构、操作系统都非常熟悉,尤其是精通C和C++编程技术. 目录 封面 -19 封底 -18 扉页 -17 版权 -16 前言 -15 目录 -10 第1章 使用Visual C++ 2010编程 1 1.1 .NET Framework 1 1.2 CLR 2 1.3 编写C++应用程序 3 1.4 学习Windows编程 4 1.4.1 学习C++ 4 1.4.2 C++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 Windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用IDE 8 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置Visual C++ 2010的选项 23 1.6.6 创建和执行Windows应用程序 23 1.6.7 创建Windows Forms应用程序 26 1.7 小结 27 1.8 本章主要内容 28 第2章 数据、变量和计算 29 2.1 C++程序结构 29 2.1.1 main()函数 36 2.1.2 程序语句 36 2.1.3 空白 38 2.1.4 语句块 38 2.1.5 自动生成的控制台程序 39 2.2 定义变量 40 2.2.1 命名变量 40 2.2.2 声明变量 41 2.2.3 变量的初始值 42 2.3 基本数据 42 2.3.1 整变量 43 2.3.2 字符数据 44 2.3.3 整修饰符 45 2.3.4 布尔 46 2.3.5 浮点 46 2.3.6 字面值 47 2.3.7 定义数据的同义词 48 2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 C++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 转换和强制转换 64 2.6.1 赋值语句中的转换 65 2.6.2 显式转换 65 2.6.3 老式的强制转换 66 2.7 AUTO关键字 66 2.8 查看 67 2.9 按位运算符 67 2.9.1 按位AND运算符 68 2.9.2 按位OR运算符 69 2.9.3 按位EOR运算符 71 2.9.4 按位NOT运算符 71 2.9.5 移位运算符 71 2.10 lvalue和rvalue 73 2.11 了解存储时间和作用域 74 2.11.1 自动变量 74 2.11.2 决定变量声明的位置 76 2.11.3 全局变量 77 2.11.4 静态变量 80 2.12 名称空间 80 2.12.1 声明名称空间 81 2.12.2 多个名称空间 82 2.13 C++/CLI编程 84 2.13.1 C++/CLI特有的基本数据 84 2.13.2 命令行上的C++/CLI输出 87 2.13.3 C++/CLI特有的功能—— 格式化输出 88 2.13.4 C++/CLI的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 C++/CLI枚举 92 2.14 查看C++/CLI 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3章 判断和循环 101 3.1 比较数据值 101 3.1.1 if语句 102 3.1.2 嵌套的if语句 104 3.1.3 嵌套的if-else语句 107 3.1.4 逻辑运算符和表达式 109 3.1.5 条件运算符 112 3.1.6 switch语句 113 3.1.7 无条件转移 116 3.2 重复执行语句块 117 3.2.1 循环的概念 117 3.2.2 for循环的变体 119 3.2.3 while循环 126 3.2.4 do-while循环 128 3.2.5 嵌套的循环 129 3.3 C++/CLI编程 132 3.4 小结 137 3.5 练习 138 3.6 本章主要内容 138 第4章 数组、字符串和指针 139 4.1 处理多个相同的数据值 139 4.1.1 数组 140 4.1.2 声明数组 140 4.1.3 初始化数组 143 4.1.4 字符数组和字符串处理 144 4.1.5 多维数组 147 4.2 间接数据访问 150 4.2.1 指针的概念 150 4.2.2 声明指针 150 4.2.3 使用指针 152 4.2.4 初始化指针 152 4.2.5 sizeof操作符 158 4.2.6 常量指针和指向常量的指针 159 4.2.7 指针和数组 161 4.3 动态内存分配 168 4.3.1 堆的别名—— 空闲存储器 168 4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地C++库函数 174 4.5.1 查找以空字符结尾的字符串的长度 174 4.5.2 连接以空字符结尾的字符串 174 4.5.3 复制以空字符结尾的字符串 176 4.5.4 比较以空字符结尾的字符串 177 4.5.5 搜索以空字符结尾的字符串 177 4.6 C++/CLI编程 179 4.6.1 跟踪句柄 180 4.6.2 CLR数组 181 4.6.3 字符串 195 4.6.4 跟踪引用 203 4.6.5 内部指针 204 4.7 小结 206 4.8 练习 206 4.9 本章主要内容 207 第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数传递数组 219 5.2.4 给函数传递引用实参 222 5.2.5 使用const修饰符 224 5.2.6 rvalue引用形参 225 5.2.7 main()函数的实参 227 5.2.8 接受数量不定的函数实参 229 5.3 从函数返回值 231 5.3.1 返回指针 231 5.3.2 返回引用 233 5.3.3 函数中的静态变量 236 5.4 递归函数调用 238 5.5 C++/CLI编程 240 5.5.1 接受数量可变实参的函数 241 5.5.2 main( )的实参 242 5.6 小结 243 5.7 练习 243 5.8 本章主要内容 244 第6章 程序结构(2) 245 6.1 函数指针 245 6.1.1 声明函数指针 246 6.1.2 函数指针作为实参 249 6.1.3 函数指针的数组 250 6.2 初始化函数形参 250 6.3 异常 252 6.3.1 抛出异常 253 6.3.2 捕获异常 254 6.3.3 MFC中的异常处理 255 6.4 处理内存分配错误 256 6.5 函数重载 257 6.5.1 函数重载的概念 258 6.5.2 引用和重载选择 260 6.5.3 何时重载函数 260 6.6 函数模板 261 6.7 使用decltype操作符 263 6.8 使用函数的示例 265 6.8.1 实现计算器 265 6.8.2 从字符串中删除空格 268 6.8.3 计算表达式的值 268 6.8.4 获得项值 270 6.8.5 分析数 271 6.8.6 整合程序 274 6.8.7 扩展程序 275 6.8.8 提取子字符串 277 6.8.9 运行修改过的程序 279 6.9 C++/CLI编程 279 6.9.1 理解泛函数 280 6.9.2 CLR版本的计算器程序 285 6.10 小结 290 6.11 练习 291 6.12 本章主要内容 292 第7章 自定义数据 293 7.1 C++中的结构 293 7.1.1 结构的概念 294 7.1.2 定义结构 294 7.1.3 初始化结构 294 7.1.4 访问结构的成员 295 7.1.5 伴随结构的智能感知帮助 298 7.1.6 RECT结构 299 7.1.7 使用指针处理结构 300 7.2 数据、对象、和实例 301 7.2.1 的起源 303 7.2.2 的操作 303 7.2.3 术语 303 7.3 理解 304 7.3.1 定义 304 7.3.2 声明的对象 305 7.3.3 访问的数据成员 305 7.3.4 的成员函数 307 7.3.5 成员函数定义的位置 309 7.3.6 内联函数 309 7.4 构造函数 310 7.4.1 构造函数的概念 311 7.4.2 默认的构造函数 312 7.4.3 在定义中指定默认的形参值 314 7.4.4 在构造函数中使用初始化列表 316 7.4.5 声明显式的构造函数 317 7.5 的私有成员 318 7.5.1 访问私有成员 320 7.5.2 的友元函数 321 7.5.3 默认复制构造函数 323 7.6 this指针 325 7.7 的const对象 327 7.7.1 的const成员函数 327 7.7.2 外部的成员函数定义 328 7.8 对象的数组 329 7.9 的静态成员 331 7.9.1 的静态数据成员 331 7.9.2 的静态函数成员 334 7.10 对象的指针和引用 334 7.10.1 对象的指针 334 7.10.2 对象的引用 337 7.11 C++/CLI编程 338 7.11.1 定义值 339 7.11.2 定义引用 344 7.11.3 定义引用的复制构造函数 346 7.11.4 属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解 363 8.1 析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 结构中的联合 372 8.4 运算符重载 373 8.4.1 实现重载的运算符 373 8.4.2 实现对比较运算符的完全支持 376 8.4.3 重载赋值运算符 379 8.4.4 重载加法运算符 384 8.4.5 重载递增和递减运算符 387 8.4.6 重载函数调用操作符 388 8.5 对象复制问题 389 8.5.1 避免不必要的复制操作 389 8.5.2 应用rvalue引用形参 392 8.5.3 命名的对象是lvalue 394 8.6 模板 399 8.6.1 定义模板 400 8.6.2 根据模板创建对象 402 8.6.3 使用有多个形参的模板 405 8.6.4 函数对象模板 406 8.7 使用 407 8.7.1 接口的概念 407 8.7.2 定义问题 407 8.7.3 实现CBox 408 8.8 组织程序代码 425 8.9 字符串的本地C++库 427 8.9.1 创建字符串对象 427 8.9.2 连接字符串 429 8.9.3 访问与修改字符串 432 8.9.4 比较字符串 436 8.9.5 搜索字符串 439 8.10 C++/CLI编程 447 8.10.1 在值中重载运算符 447 8.10.2 重载递增和递减运算符 452 8.10.3 在引用中重载运算符 453 8.10.4 实现引用的赋值运算符 455 8.11 小结 456 8.12 练习 456 8.13 本章主要内容 457 第9章 继承和虚函数 459 9.1 面向对象编程的基本思想 459 9.2 的继承 460 9.2.1 基的概念 461 9.2.2 基的派生 461 9.3 继承机制下的访问控制 464 9.3.1 派生中构造函数的操作 467 9.3.2 声明的保护成员 470 9.3.3 继承成员的访问级别 473 9.4 派生中的复制构造函数 474 9.5 友元成员 477 9.5.1 友元 479 9.5.2 对友元关系的限制 479 9.6 虚函数 479 9.6.1 虚函数的概念 481 9.6.2 使用指向对象的指针 483 9.6.3 使用引用处理虚函数 485 9.6.4 纯虚函数 486 9.6.5 抽象 487 9.6.6 间接基 489 9.6.7 虚析构函数 491 9.7 之间的强制转换 494 9.8 嵌套 495 9.9 C++/CLI编程 498 9.9.1 装箱与拆箱 499 9.9.2 C++/CLI的继承 499 9.9.3 接口 505 9.9.4 定义接口 505 9.9.5 和程序集 509 9.9.6 被指定为new的函数 513 9.9.7 委托和事件 514 9.9.8 引用的析构函数和终结器 525 9.9.9 527 9.10 小结 536 9.11 练习 536 9.12 本章主要内容 539 第10章 标准模板库 541 10.1 标准模板库的定义 541 10.1.1 容器 542 10.1.2 容器适配器 542 10.1.3 迭代器 543 10.1.4 算法 544 10.1.5 STL中的函数对象 545 10.1.6 函数适配器 545 10.2 STL容器范围 545 10.3 序列容器 545 10.3.1 创建矢量容器 546 10.3.2 矢量容器的容量和大小 549 10.3.3 访问矢量中的元素 553 10.3.4 在矢量中插入和删除元素 553 10.3.5 在矢量中存储对象 555 10.3.6 排序矢量元素 559 10.3.7 排序矢量中的指针 560 10.3.8 双端队列容器 562 10.3.9 使用列表容器 565 10.3.10 使用其他序列容器 574 10.4 关联容器 588 10.4.1 使用映射容器 589 10.4.2 使用多重映射容器 600 10.5 关于迭代器的更多内容 600 10.5.1 使用输入流迭代器 601 10.5.2 使用插入迭代器 604 10.5.3 使用输出流迭代器 605 10.6 关于函数对象的更多内容 607 10.7 关于算法的更多内容 608 10.7.1 fill() 608 10.7.2 replace() 609 10.7.3 find() 609 10.7.4 transform() 610 10.8 lambda表达式 611 10.8.1 capture子句 612 10.8.2 捕获特定的变量 613 10.8.3 模板和lambda表达式 613 10.8.4 包装lambda表达式 617 10.9 C++/CLI程序的STL 618 10.9.1 STL/CLR容器 619 10.9.2 使用序列容器 619 10.9.3 使用关联容器 627 10.10 C++/CLI中的lambda表达式 633 10.11 小结 633 10.12 练习 633 10.13 本章主要内容 634 第11章 调试技术 635 11.1 理解调试 635 11.1.1 程序故障 636 11.1.2 常见故障 637 11.2 基本的调试操作 638 11.2.1 设置断点 639 11.2.2 设置跟踪点 641 11.2.3 启动调试模式 641 11.2.4 修改变量的值 645 11.3 添加调试代码 645 11.3.1 使用断言 645 11.3.2 添加自己的调试代码 647 11.4 调试程序 652 11.4.1 调用栈 652 11.4.2 单步执行到出错位置 653 11.5 测试扩展的 656 11.6 调试动态内存 659 11.6.1 检查空闲存储器的函数 660 11.6.2 控制空闲存储器的调试操作 661 11.6.3 空闲存储器的调试输出 662 11.7 调试C++/CLI程序 668 11.7.1 使用调试Debug和跟踪Trace 668 11.7.2 在Windows Forms应用程序中获得跟踪输出 676 11.8 小结 677 11.9 本章主要内容 677 第12章 Windows编程的概念 679 12.1 Windows编程基础 679 12.1.1 窗口的元素 680 12.1.2 Windows程序与操作系统 681 12.1.3 事件驱动程序 682 12.1.4 Windows消息 682 12.1.5 Windows API 682 12.1.6 Windows数据 683 12.1.7 Windows程序中的符号 684 12.2 Windows程序的结构 685 12.2.1 WinMain()函数 686 12.2.2 消息处理函数 696 12.2.3 简单的Windows程序 700 12.3 Windows程序的组织 701 12.4 MFC 702 12.4.1 MFC表示法 702 12.4.2 MFC程序的组织方式 702 12.5 使用Windows Forms 706 12.6 小结 707 12.7 本章主要内容 707 第13章 多核编程 709 13.1 并行处理基本知识 709 13.2 并行模式库 710 13.3 并行处理算法 710 13.3.1 使用parallel_for算法 710 13.3.2 使用parallel_for_each算法 712 13.3.3 使用parallel_invoke算法 714 13.4 真正的并行问题 715 13.5 临界区 728 13.5.1 使用critical_section对象 728 13.5.2 锁定代码节或解除代码节锁定 729 13.6 combinable模板 731 13.7 任务和任务组 733 13.8 小结 736 13.9 练习 736 13.10 本章主要内容 736 第14章 使用MFC编写Windows程序 739 14.1 MFC的文档/视图概念 739 14.1.1 文档的概念 739 14.1.2 文档界面 740 14.1.3 视图的概念 740 14.1.4 链接文档和视图 741 14.1.5 应用程序和MFC 742 14.2 创建MFC应用程序 743 14.2.1 创建SDI应用程序 745 14.2.2 MFC Application Wizard的输出 748 14.2.3 创建MDI应用程序 757 14.3 小结 760 14.4 练习 760 14.5 本章主要内容 760 第15章 处理菜单和工具栏 763 15.1 与Windows进行通信 763 15.1.1 了解消息映射 764 15.1.2 消息别 767 15.1.3 处理程序中的消息 767 15.2 扩展Sketcher程序 768 15.3 菜单的元素 769 15.4 为菜单消息添加处理程序 771 15.4.1 选择处理菜单消息的 773 15.4.2 创建菜单消息函数 773 15.4.3 编写菜单消息函数的代码 775 15.4.4 添加更新用户界面的消息处理程序 778 15.5 添加工具栏按钮 781 15.5.1 编辑工具栏按钮的属性 782 15.5.2 练习使用工具栏按钮 783 15.5.3 添加工具提示 784 15.6 C++/CLI程序中的菜单和工具栏 785 15.6.1 理解Windows Forms 785 15.6.2 理解Windows Forms应用程序 786 15.6.3 在CLR Sketcher中添加菜单 788 15.6.4 添加菜单项的事件处理程序 790 15.6.5 实现事件处理程序 791 15.6.6 设置菜单项复选 792 15.6.7 添加工具栏 793 15.7 小结 797 15.8 练习 797 15.9 本章主要内容 797 第16章 在窗口中绘图 799 16.1 窗口绘图的基础知识 799 16.1.1 窗口工作区 800 16.1.2 Windows图形设备界面 800 16.2 Visual C++中的绘图机制 802 16.2.1 应用程序中的视图 802 16.2.2 CDC 803 16.3 实际绘制图形 811 16.4 对鼠标进行编程 813 16.4.1 鼠标发出的消息 813 16.4.2 鼠标消息处理程序 814 16.4.3 使用鼠标绘图 816 16.5 练习使用Sketcher程序 837 16.5.1 运行示例 838 16.5.2 捕获鼠标消息 838 16.6 在CLR中绘图 840 16.6.1 在窗体上绘图 840 16.6.2 添加鼠标事件处理程序 840 16.6.3 定义C++/CLI元素 842 16.6.4 实现MouseMove事件处理程序 850 16.6.5 实现MouseUp事件处理程序 851 16.6.6 实现窗体的Paint事件处理程序 851 16.7 小结 852 16.8 练习 852 16.9 本章主要内容 853 第17章 创建文档和改进视图 855 17.1 创建草图文档 855 17.2 改进视图 859 17.2.1 更新多个视图 859 17.2.2 滚动视图 861 17.2.3 使用MM_LOENGLISH映射模式 865 17.3 删除和移动形状 866 17.4 实现上下文菜单 866 17.4.1 关联菜单和 867 17.4.2 练习弹出菜单 870 17.4.3 突出显示元素 870 17.4.4 处理菜单消息 874 17.5 处理屏蔽的元素 881 17.6 扩展CLR Sketcher 882 17.6.1 坐标系统转换 882 17.6.2 定义草图 885 17.6.3 在Paint事件处理程序中绘制草图 886 17.6.4 实现元素的突出显示 887 17.6.5 创建上下文菜单 891 17.7 小结 897 17.8 练习 897 17.9 本章主要内容 898 第18章 使用对话框和控件 899 18.1 理解对话框 899 18.2 理解控件 900 18.3 创建对话框资源 900 18.3.1 给对话框添加控件 901 18.3.2 测试对话框 902 18.4 对话框的编程 902 18.4.1 添加对话框 902 18.4.2 模态和非模态对话框 903 18.4.3 显示对话框 903 18.5 支持对话框控件 906 18.5.1 初始化控件 906 18.5.2 处理单选按钮消息 907 18.6 完成对话框的操作 908 18.6.1 给文档添加线宽 908 18.6.2 给元素添加线宽 909 18.6.3 在视图中创建元素 910 18.6.4 练习使用对话框 910 18.7 使用微调按钮控件 911 18.7.1 添加Scale菜单项和工具栏按钮 911 18.7.2 创建微调按钮 911 18.7.3 生成比例对话框 913 18.7.4 显示微调按钮 915 18.8 使用缩放比例 916 18.8.1 可缩放的映射模式 916 18.8.2 设置文档的大小 917 18.8.3 设置映射模式 918 18.8.4 同时实现滚动与缩放 919 18.9 使用CTaskDialog 921 18.9.1 显示任务对话框 921 18.9.2 创建CTaskDialog对象 923 18.10 使用状态栏 925 18.11 使用列表框 929 18.11.1 删除比例对话框 929 18.11.2 创建列表框控件 929 18.12 使用编辑框控件 931 18.12.1 创建编辑框资源 931 18.12.2 创建对话框 933 18.12.3 添加Text菜单项 934 18.12.4 定义文本元素 935 18.12.5 实现CText 935 18.13 CLR Sketcher中的对话框和控件 940 18.13.1 添加对话框 940 18.13.2 创建文本元素 946 18.14 小结 953 18.15 练习 953 18.16 本章主要内容 953 第19章 存储和打印文档 955 19.1 了解序列化 955 19.2 序列化文档 956 19.2.1 文档定义中的序列化 956 19.2.2 文档实现中的序列化 957 19.2.3 基于CObject的的功能 959 19.2.4 序列化的工作方式 960 19.2.5 如何实现的序列化 961 19.3 应用序列化 961 19.3.1 记录文档修改 962 19.3.2 序列化文档 963 19.3.3 序列化元素 965 19.4 练习序列化 968 19.5 打印文档 969 19.6 实现多页打印 972 19.6.1 获取文档的总尺寸 973 19.6.2 存储打印数据 973 19.6.3 准备打印 974 19.6.4 打印后的清除 976 19.6.5 准备设备上下文 976 19.6.6 打印文档 977 19.6.7 获得文档的打印输出 980 19.7 CLR Sketcher中的序列化和打印 981 19.7.1 了解二进制序列化 981 19.7.2 序列化草图 985 19.7.3 打印草图 995 19.8 小结 996 19.9 练习 996 19.10 本章主要内容 997 第20章 编写自己的DLL 999 20.1 了解DLL 999 20.1.1 DLL的工作方式 1000 20.1.2 DLL的内容 1003 20.1.3 DLL变体 1003 20.2 决定放入DLL的内容 1004 20.3 编写DLL 1005 20.4 小结 1011 20.5 练习 1011 20.6 本章主要内容 1011 前言   欢迎使用本书。通过学习本书,您可以使用Microsoft公司最新的应用程序开发系统,成为优秀的C++程序员。本书旨在讲述C++程序设计语言,然后讲述如何运用C++语言开发自己的Windows应用程序。在此过程中,读者将了解这一最新Visual C++版本所提供的很多激动人心的新功能,包括如何在自己的应用程序中充分利用多核处理器。   0.1 使用C++语言编程   Visual C++ 2010支持两种截然不同但又紧密相关的C++语言,即ISO/IEC标准C++(本书称其为本地C++)和C++/CLI。虽然很多专业开发人员选用本地C++,尤其是当性能是需要考虑的主要因素时,但是C++/CLI和Windows Forms应用程序带来的开发速度和简易性使得C++/CLI也成了基本的语言。因此,本书将深入讨论这两种版本的C++语言。   Visual C++ 2010完全支持原来的ISO/IEC标准C++语言,同时还支持即将发布的ISO/IEC标准C++提供的一些功能强大的新特性。因此,本书不仅涵盖ISO/IEC标准C++的原有功能,同时还会介绍新语言特性。   Visual C++ 2010也支持C++/CLI,它是Microsoft公司作为本地C++的扩展而开发的C++版本。C++/CLI背后的思想是向本地C++添加一些特性,从而能够开发以.NET支持的虚拟机环境为目标的应用程序。这就将C++添加到能使用.NET Framework的其他语言(例如,BASIC和C#)中。C++/CLI语言目前是一个ECMA标准,同时也符合定义.NET虚拟机环境的CLI标准。   Visual C++ 2010的这两种C++版本互为补充,各自完成不同的任务。ISO/IEC C++用于开发在本地计算机上运行的高性能应用程序,而C++/CLI专门为.NET Framework开发应用程序。掌握了使用这两种C++版本开发应用程序的基础知识之后,就能够充分利用Visual C++ 2010。   0.2 开发Windows应用程序   充分理解C++之后,就可以着手开发Windows应用程序。Microsoft基本(Microsoft Foundation Classes,MFC)封装了Windows API,提供了全面而易于使用的功能,从而能够使用本地C++开发高性能的Windows应用程序。   当编写本地C++程序时,可以从自动生成的代码中获得大量帮助,但仍然需要亲自编写大量C++代码。我们不仅需要对面向对象编程(OOP)技术有扎实的理解,而且需要充分了解Windows编程所涉及的各个方面。本书会介绍所有这些知识点。   C++/CLI虽然针对.NET Framework开发,但同时也是Windows Forms应用程序开发的载体。开发Windows Forms应用程序时,在不用编写一行代码的情况下,即使不能创建应用程序交互所需的用户界面的所有元素,也可以创建其中的很多元素。当然,仍然需要定制Windows Forms应用程序,才能完成相应的任务,但开发时间与使用本地C++创建应用程序相比只占一小部分。当给Windows Forms应用程序添加定制代码时,即使这部分代码只占到代码总量的很小比例,也仍然要求我们深入理解C++/CLI语言,才能做到游刃有余。本书旨在介绍这些知识。   0.3 高级库功能   并行模式库(Parallel Patterns Library,PPL)是Visual C++ 2010增加的一个令人激动的新功能,通过此功能,我们可以轻松编写使用多处理器的程序。在过去,为多处理器编程并非易事,但有了PPL,这就确实变得很容易了。本书将介绍PPL的各种使用方式,从而加快计算密集应用程序的执行速度。   0.4 本书读者对象   本书针对任何想要学习如何使用Visual C++ 2010编写在Microsoft Windows操作系统下运行的C++应用程序的读者。阅读本书不需要预先具备任何特定编程语言的知识。如果属于下列4种情形之一,您就适合学习本教程:   ·属于编程新手,十分渴望投入编程世界,并最终掌握C++。要取得成功,您至少需要对计算机的工作原理有大体的理解——包括内存的组织方式以及数据和指令的存储方式。   ·具备一些其他语言的编程经验,如BASIC;渴望学习C++,并想提升实际的Microsoft Windows编程技能。   ·有一些使用C语言或C++语言的经验,但使用环境不是Microsoft Windows;希望使用最新的工具和技术,扩展在Windows环境下编程的技能。   ·有一些C++知识,并希望扩展C++技能,成为会使用C++/CLI的编程人员。   0.5 本书主要内容   本书实质上涵盖了两大主题:C++编程语言以及如何使用MFC或.NET Framework编写Windows应用程序。在开发完全成熟的Windows应用程序之前,需要具备相当水平的C++知识,因此,首先学习这本C++教程。 .  本书的第一部分通过可运行于两种C++语言版本上的一个详细的循序渐进式教程,讲授了使用Visual C++ 2010支持的两种C++语言技术编写C++程序的基础知识。您将了解本地ISO/IEC C++语言的语法和用法,并通过一系列范围广泛的可工作示例,获得实际运用它的经验和信心。本书也提供了一些练习,可以检验所学的知识,并且可以下载练习题答案。而C++/CLI作为本地C++的扩展来学习,这仍然是通过一些可运行的示例来说明每一个特性的工作原理。   当然,本语言教程也介绍和说明了C++标准库功能的用法,因为开发程序时极有可能使用它们。随着深入地学习C++语言,您的标准库知识会不断增加。还将学习标准模板库(Standard Template Library,STL)以两种形式——即本地C++版本和C++/CLI版本——提供的强大工具。另外,本书还用一章的篇幅专门讲述新增的并行模式库(PPL)功能,从而能够利用PC的多核处理功能来开发计算密集应用程序。   对C++的运用有信心之后,就可以继续学习Windows编程了。通过创建超过2000行代码的大可运行的应用程序,学习如何使用MFC来开发本地Windows应用程序。开发此应用程序贯穿多章内容,使用到了MFC提供的一系列用户界面功能。为学习如何使用C++/CLI编写Windows程序,相应地开发了一个与本地C++应用程序具有相似用户界面特性的Windows Forms应用程序。   0.6 本书结构   本书内容的结构安排如下:   ·第1章介绍使用C++编写本地应用程序和.NET Framework应用程序所需要理解的基本概念,以及在Visual C++ 2010开发环境中体现的主要思想,还叙述了如何使用Visual C++ 2010的功能来创建本书其余部分要学习的各种C++应用程序。   ·第2~9章讲授两种C++语言版本。第2~9章内容的组织方式都相似:各章的前半部分讨论本地C++语言的元素,后半部分讨论如何在C++/CLI中提供相同的功能。   ·第10章介绍如何使用标准模板库(Standard Template Library,STL)。STL是一组功能强大且全面的工具,用来组织和操作本地C++程序中的数据。由于STL是独立于应用程序的,因此可以在上下文中大量应用它。第10章还介绍了Visual C++ 2010新增的STL/CLR。它是C++/CLI应用程序的STL版本。   ·第11章介绍了在C++程序中查找错误的技术。涵盖了调试程序的一般原则,以及Visual C++ 2010提供的基本特性,这些特性可以帮助我们查找代码中的错误。   ·第12章讨论Microsoft Windows应用程序的组织方式,并描述和展示了在所有Windows应用程序中都存在的基本元素。本章解释了以本地C++语言编写的、使用Windows API和MFC的Windows应用程序示例,还给出了一个使用C++/CLI语言编写的Windows Forms应用程序的基础示例。   ·第13章介绍了如何在PC有多核处理器的情况下编写程序以使用多个处理器。通过一些完整的工作示例展示了并行处理的基本技术,这些示例Windows API应用程序是计算密集程序。   ·第14~19章讲述Windows编程。详细描述了如何使用MFC提供的构建GUI的功能编写本地C++ Windows应用程序以及如何在C++/CLI Windows应用程序中使用.NET Framework。我们将学习如何创建并使用通用控件来构建应用程序的图形用户界面,还将学习如何处理因用户与程序的交互作用而产生的事件。除了学习构建GUI的技术以外,还将从开发该应用程序的过程中学到如何打印文档,以及如何在磁盘上保存应用程序数据。   ·第20章讲述为使用MFC创建自己的库而需要知道的基本知识。我们将了解可以创建的不同种的库,还将开发能够与前6章开发的应用程序协同工作的示例。   本书各章内容都包括许多工作示例,通过这些示例阐明所讨论的编程技术。每章结束时都总结了该章所讲述的要点,大多数章节都在最后给出了一组练习,您可以应用所学的技术来试着解答这些练习。练习的答案连同书中的所有代码都可以从http://www.wrox.com和http://www.tupwk.com.cn/ downpage下载。关于C++语言教程使用的示例都是使用简单的命令行输入和输出的控制台程序。这种方法使我们能够在不陷入复杂的Windows GUI编程的情况下,学习C++的各种功能。实际上,只有在透彻地理解编程语言之后,才能进行Windows 编程。   如果希望使学习过程尽可能简单,或者如果您是程序设计初学者,那么最初可以只学习本地C++编程语言。讲授C++语言的各章(第2~9章)都是首先讨论本地C++功能的特定方面,然后再讨论C++/CLI在相同的上下文中引入的新功能。以这种方式组织各章内容的原因在于,C++/CLI是作为ISO/IEC标准语言的扩展定义的,对C++/CLI的理解是以对ISO/IEC C++的理解为基础的。因此,您可以只阅读各章中的本地C++部分,而忽略后面的C++/CLI部分。然后可以继续使用本地C++开发Windows应用程序,而免去记住两种语言版本的苦恼。在熟悉了ISO/IEC C++之后,您可以回头重新学习C++/CLI。当然,如果您已经有一些编程经验,也可以逐章进行学习,从而同步增加这两种C++语言版本的知识。   0.7 使用本书的前提   为了充分地使用本书,需要可支持MFC的某个Visual C++ 2010(或Visual Studio 2010)版本。需要注意的是,免费的Visual C++ 2010 Express Edition版本是不行的。因为此版本只提供C++编译器以及对基本Windows API的访问,并没有提供MFC库。因此,Visual C++ 2010(或Visual Studio 2010)的任何付费版本都能够编译并执行本书的所有示例。   0.8 源代码   读者在阅读本书提供的代码时,既可以亲自输入所有代码,也可以使用随书提供的代码文件。本书所有代码均可以从http://www.wrox.com/或www.tupwk.com.cn/downpage网站下载。进入该网站后,读者可以根据本书的书名查找本书(既可以使用搜索框,也可以使用书名列表进行查找),然后单击本书详细内容页面上提供的Download Code链接,就可以下载本书提供的所有代码。   注意:   由于许多书籍名称与本书似,读者也可以通过ISBN进行查找,本书的ISBN为:978-0-470-50088-0。   另外,读者可以从前面提到的CodePlex网站下载本书或其他Wrox书籍的代码,也可以从Wrox的代码下载页面http://www.wrox.com/dynamic/books/download.aspx和http://www. tupwk.com.cn/downpage下载本书或其他Wrox书籍的代码。   源代码下载成功后,读者用任一解压工具将其解压即可。   0.9 勘误表   为了避免本书文字和代码中存在错误,我们已经竭尽全力。然而,世界上并不存在完美无缺的事物,所以本书可能仍然存在错误。如果读者在我们编写的某本书籍中发现了诸如拼写错误或代码缺陷等问题,那么请告诉我们,我们对此表示感谢。利用勘误表反馈错误信息,可以为其他读者节省大量时间,同时,我们也能够受益于读者的帮助,这样有助于我们编写出质量更高的专业著作。   如果读者需要参考本书的勘误表,请在网站http://www.wrox.com中用搜索框或书名列表查找本书书名。然后,在本书的详细内容页面上,单击Book Errata链接。在随后显示的页面中,读者可以看到与本书相关的所有勘误信息,这些信息是由读者提交、并由Wrox的编辑们加上的。通过访问http://www.wrox.com/misc-pages/booklist.shtml,读者还可以看到Wrox出版的所有书籍的勘误表。   如果读者没有在Book Errata页面上找到自己发现的错误,那么请转到页面http://www. wrox.com/contact/techsupport.shtml,针对您所发现的每一项错误填写表格,并将表格发给我们,我们将对表格内容进行认真审查,如果确实是我们书中的错误,我们将在该书的Book Errata页面上标明该错误信息,并在该书的后续版本中改正。   0.10 关于p2p.wrox.com网站   如果读者希望能够与作者进行讨论,或希望能够参与到读者的共同讨论中,那么请加入p2p.wrox.com论坛。该论坛是一个基于Web的系统,读者可以在论坛发表与Wrox出版的书籍及相关技术的信息,并与其他读者和技术用户进行讨论。论坛提供了订阅功能,可以将与读者所选定主题相关的新帖子定期发送到读者的电子邮箱。Wrox的作者、编辑、业界专家,以及其他读者都会参与论坛中的讨论。   读者可以在http://p2p.wrox.com参与多个论坛的讨论,这些论坛不仅能够帮助读者更好地理解本书,还有助于读者更好地开发应用程序。如果读者希望加入论坛,那么请按照以下步骤执行:   (1) 进入http://p2p.wrox.com页面,单击Register链接。   (2) 阅读使用条款,然后单击Agree按钮。   (3) 填写必要的信息及可选信息,然后单击Submit按钮。   (4) 随后读者会收到一封电子邮件,邮件中说明了如何验证账户并完成整个加入过程。   读者无须加入P2P论坛即可阅读论坛消息,但如果需要发表主题或发表回复,那么必须加入论坛。   成功加入论坛后,读者就可以发表新主题了。此时,读者还可以回复其他用户发表的主题。读者在任何时间都可以阅读论坛信息,如果需要论坛将新的信息发送到自己的电子邮箱,那么可以单击论坛列表中论坛名称旁的Subscribe to this Forum图标完成这项功能设置。   如果读者需要获得更多与Wrox P2P相关的信息,请阅读P2P FAQs,这样可以获得大量与P2P和Wrox出版的书籍相关的具体信息。阅读FAQs时,请单击P2P页面上的FAQs链接。   
注意:由于上传大小限制,此电子书分为两个压缩包,此压缩包part1为第一部分,需下载part2后同时进行解压!!!! 《Visual C++2010入门经典(第5版)》:使用visual C++ 2010支持的两种C++语言技术讲述C++编程的基础知识。 分享c++程序的错误查找技术,介绍程序调试的通用准则。 讨论每一个windows应用程序的结构和基本元素。 举例说明如何用mfc开发本地windows应用程序。 指导读者用C++和C++/Cli设计和创建具体的windows应用程序。 提供了大量可以工作的示例和练习,旨在帮助读者掌握编程技巧。 目录 第1章 使用visual c++ 2010编程 1 1.1 .net framework 1 1.2 clr 2 1.3 编写c++应用程序 3 1.4 学习windows编程 4 1.4.1 学习c++ 4 1.4.2 c++标准 5 1.4.3 属性 5 1.4.4 控制台应用程序 5 1.4.5 windows编程概念 6 1.5 集成开发环境简介 7 1.5.1 编辑器 8 1.5.2 编译器 8 1.5.3 链接器 8 1.5.4 库 8 1.6 使用ide 8 1.6.1 工具栏选项 9 1.6.2 可停靠的工具栏 10 1.6.3 文档 11 1.6.4 项目和解决方案 11 1.6.5 设置visual c++ 2010的选项 23 1.6.6 创建和执行windows应用程序 23 1.6.7 创建windows forms应用程序 26 1.7 小结 27 1.8 本章主要内容 28 第2章 数据、变量和计算 29 2.1 c++程序结构 29 2.1.1 main()函数 36 2.1.2 程序语句 36 2.1.3 空白 38 2.1.4 语句块 38 2.1.5 自动生成的控制台程序 39 2.2 定义变量 40 2.2.1 命名变量 40 2.2.2 声明变量 41 2.2.3 变量的初始值 42 2.3 基本数据 42 2.3.1 整变量 43 2.3.2 字符数据 44 2.3.3 整修饰符 45 2.3.4 布尔 46 2.3.5 浮点 46 2.3.6 字面值 47 2.3.7 定义数据的同义词 48 2.3.8 具有特定值集的变量 49 2.4 基本的输入/输出操作 50 2.4.1 从键盘输入 50 2.4.2 到命令行的输出 50 2.4.3 格式化输出 51 2.4.4 转义序列 52 2.5 c++中的计算 54 2.5.1 赋值语句 54 2.5.2 算术运算 55 2.5.3 计算余数 59 2.5.4 修改变量 60 2.5.5 增量和减量运算符 60 2.5.6 计算的顺序 63 2.6 转换和强制转换 64 2.6.1 赋值语句中的转换 65 2.6.2 显式转换 65 2.6.3 老式的强制转换 66 2.7 auto关键字 66 2.8 查看 67 2.9 按位运算符 67 2.9.1 按位and运算符 68 2.9.2 按位or运算符 69 2.9.3 按位eor运算符 71 2.9.4 按位not运算符 71 2.9.5 移位运算符 71 2.10 lvalue和rvalue 73 2.11 了解存储时间和作用域 74 2.11.1 自动变量 74 2.11.2 决定变量声明的位置 76 2.11.3 全局变量 77 2.11.4 静态变量 80 2.12 名称空间 80 2.12.1 声明名称空间 81 2.12.2 多个名称空间 82 2.13 c++/cli编程 84 2.13.1 c++/cli特有的基本数据 84 2.13.2 命令行上的c++/cli输出 87 2.13.3 c++/cli特有的功能—— 格式化输出 88 2.13.4 c++/cli的键盘输入 91 2.13.5 使用safe_cast 92 2.13.6 c++/cli枚举 92 2.14 查看c++/cli 96 2.15 小结 97 2.16 练习 97 2.17 本章主要内容 98 第3章 判断和循环 101 3.1 比较数据值 101 3.1.1 if语句 102 3.1.2 嵌套的if语句 104 3.1.3 嵌套的if-else语句 107 3.1.4 逻辑运算符和表达式 109 3.1.5 条件运算符 112 3.1.6 switch语句 113 3.1.7 无条件转移 116 3.2 重复执行语句块 117 3.2.1 循环的概念 117 3.2.2 for循环的变体 119 3.2.3 while循环 126 3.2.4 do-while循环 128 3.2.5 嵌套的循环 129 3.3 c++/cli编程 132 3.4 小结 137 3.5 练习 138 3.6 本章主要内容 138 第4章 数组、字符串和指针 139 4.1 处理多个相同的数据值 139 4.1.1 数组 140 4.1.2 声明数组 140 4.1.3 初始化数组 143 4.1.4 字符数组和字符串处理 144 4.1.5 多维数组 147 4.2 间接数据访问 150 4.2.1 指针的概念 150 4.2.2 声明指针 150 4.2.3 使用指针 152 4.2.4 初始化指针 152 4.2.5 sizeof操作符 158 4.2.6 常量指针和指向常量的指针 159 4.2.7 指针和数组 161 4.3 动态内存分配 168 4.3.1 堆的别名—— 空闲存储器 168 4.3.2 new和delete操作符 168 4.3.3 为数组动态分配内存 169 4.3.4 多维数组的动态分配 171 4.4 使用引用 172 4.4.1 引用的概念 172 4.4.2 声明并初始化lvalue引用 172 4.4.3 声明并初始化rvalue引用 173 4.5 字符串的本地c++库函数 174 4.5.1 查找以空字符结尾的字符串的长度 174 4.5.2 连接以空字符结尾的字符串 174 4.5.3 复制以空字符结尾的字符串 176 4.5.4 比较以空字符结尾的字符串 177 4.5.5 搜索以空字符结尾的字符串 177 4.6 c++/cli编程 179 4.6.1 跟踪句柄 180 4.6.2 clr数组 181 4.6.3 字符串 195 4.6.4 跟踪引用 203 4.6.5 内部指针 204 4.7 小结 206 4.8 练习 206 4.9 本章主要内容 207 第5章 程序结构(1) 209 5.1 理解函数 209 5.1.1 需要函数的原因 210 5.1.2 函数的结构 210 5.1.3 使用函数 213 5.2 给函数传递实参 216 5.2.1 按值传递机制 216 5.2.2 给函数传递指针实参 217 5.2.3 给函数传递数组 219 5.2.4 给函数传递引用实参 222 5.2.5 使用const修饰符 224 5.2.6 rvalue引用形参 225 5.2.7 main()函数的实参 227 5.2.8 接受数量不定的函数实参 229 5.3 从函数返回值 231 5.3.1 返回指针 231 5.3.2 返回引用 233 5.3.3 函数中的静态变量 236 5.4 递归函数调用 238 5.5 c++/cli编程 240 5.5.1 接受数量可变实参的函数 241 5.5.2 main( )的实参 242 5.6 小结 243 5.7 练习 243 5.8 本章主要内容 244 第6章 程序结构(2) 245 6.1 函数指针 245 6.1.1 声明函数指针 246 6.1.2 函数指针作为实参 249 6.1.3 函数指针的数组 250 6.2 初始化函数形参 250 6.3 异常 252 6.3.1 抛出异常 253 6.3.2 捕获异常 254 6.3.3 mfc中的异常处理 255 6.4 处理内存分配错误 256 6.5 函数重载 257 6.5.1 函数重载的概念 258 6.5.2 引用和重载选择 260 6.5.3 何时重载函数 260 6.6 函数模板 261 6.7 使用decltype操作符 263 6.8 使用函数的示例 265 6.8.1 实现计算器 265 6.8.2 从字符串中删除空格 268 6.8.3 计算表达式的值 268 6.8.4 获得项值 270 6.8.5 分析数 271 6.8.6 整合程序 274 6.8.7 扩展程序 275 6.8.8 提取子字符串 277 6.8.9 运行修改过的程序 279 6.9 c++/cli编程 279 6.9.1 理解泛函数 280 6.9.2 clr版本的计算器程序 285 6.10 小结 290 6.11 练习 291 6.12 本章主要内容 292 第7章 自定义数据 293 7.1 c++中的结构 293 7.1.1 结构的概念 294 7.1.2 定义结构 294 7.1.3 初始化结构 294 7.1.4 访问结构的成员 295 7.1.5 伴随结构的智能感知帮助 298 7.1.6 rect结构 299 7.1.7 使用指针处理结构 300 7.2 数据、对象、和实例 301 7.2.1 的起源 303 7.2.2 的操作 303 7.2.3 术语 303 7.3 理解 304 7.3.1 定义 304 7.3.2 声明的对象 305 7.3.3 访问的数据成员 305 7.3.4 的成员函数 307 7.3.5 成员函数定义的位置 309 7.3.6 内联函数 309 7.4 构造函数 310 7.4.1 构造函数的概念 311 7.4.2 默认的构造函数 312 7.4.3 在定义中指定默认的形参值 314 7.4.4 在构造函数中使用初始化列表 316 7.4.5 声明显式的构造函数 317 7.5 的私有成员 318 7.5.1 访问私有成员 320 7.5.2 的友元函数 321 7.5.3 默认复制构造函数 323 7.6 this指针 325 7.7 的const对象 327 7.7.1 的const成员函数 327 7.7.2 外部的成员函数定义 328 7.8 对象的数组 329 7.9 的静态成员 331 7.9.1 的静态数据成员 331 7.9.2 的静态函数成员 334 7.10 对象的指针和引用 334 7.10.1 对象的指针 334 7.10.2 对象的引用 337 7.11 c++/cli编程 338 7.11.1 定义值 339 7.11.2 定义引用 344 7.11.3 定义引用的复制构造函数 346 7.11.4 属性 346 7.11.5 initonly字段 358 7.11.6 静态构造函数 360 7.12 小结 360 7.13 练习 360 7.14 本章主要内容 361 第8章 深入理解 363 8.1 析构函数 363 8.1.1 析构函数的概念 363 8.1.2 默认的析构函数 364 8.1.3 析构函数与动态内存分配 366 8.2 实现复制构造函数 369 8.3 在变量之间共享内存 370 8.3.1 定义联合 371 8.3.2 匿名联合 372 8.3.3 结构中的联合 372 8.4 运算符重载 373 …… 第9章 继承和虚函数 第10章 标准模板库 第11章 调试技术 第12章 windows编程的概念 第13章 多核编程 第14章 使用mfc编写windows程序 第15章 处理菜单和工具栏 第16章 在窗口中绘图 第17章 创建文档和改进视图 第18章 使用对话框和控件 第19章 存储和打印文档 第20章 编写自己的dll
【原书名】 C++ Primer (4th Edition) 【原出版社】 Addison Wesley/Pearson 【作者】 (美)Stanley B.Lippman,Josée LaJoie,Barbara E.Moo 【译者】 李师贤 蒋爱军 梅晓勇 林瑛 【丛书名】 图灵计算机科学丛书 【出版社】 人民邮电出版社 【书号】 7-115-14554-7 【开本】 16开 【页码】 900 【出版日期】 2006-3-1 【版次】 4-1 【内容简介】 本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++ 先驱Barbara E. Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当前的业界最佳实践。书中不但新增大量教学辅助内容,用于强调重要的知识点,提醒常见的错误,推荐优秀的编程实践,给出使用提示,还包含大量来自实战的示例和习题。对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++初学者的最佳指南;对于中高级程序员,本书也是不可或缺的参考书。本书的前言阐述了 第4版和前一版的不同之处。 【目录信息】 第1章 快速入门 1 1.1 编写简单的C++程序 2 1.2 初窥输入/输出 5 1.2.1 标准输入与输出对象 5 1.2.2 一个使用IO库的程序 5 1.3 关于注释 8 1.4 控制结构 10 1.4.1 while语句 10 1.4.2 for语句 12 1.4.3 if语句 14 1.4.4 读入未知数目的输入 15 1.5 的简介 17 1.5.1 Sales_item 17 1.5.2 初窥成员函数 19 1.6 C++程序 21 小结 22 术语 22 第一部分 基本语言 第2章 变量和基本 29 2.1 基本内置 30 2.1.1 整 30 2.1.2 浮点 32 2.2 字面值常量 34 2.3 变量 38 2.3.1 什么是变量 39 2.3.2 变量名 40 2.3.3 定义对象 42 2.3.4 变量初始化规则 44 2.3.5 声明和定义 45 2.3.6 名字的作用域 46 2.3.7 在变量使用处定义变量 48 2.4 const限定符 49 2.5 引用 50 2.6 typedef名字 53 2.7 枚举 53 2.8 54 2.9 编写自己的头文件 57 2.9.1 设计自己的头文件 58 2.9.2 预处理器的简单介绍 60 小结 62 术语 62 第3章 标准库 67 3.1 命名空间的using声明 68 3.2 标准库string 70 3.2.1 string对象的定义和初始化 70 3.2.2 String对象的读写 71 3.2.3 string对象的操作 72 3.2.4 string对象中字符的处理 76 3.3 标准库vector 78 3.3.1 vector对象的定义和初始化 79 3.3.2 vector对象的操作 81 3.4 迭代器简介 83 3.5 标准库bitset 88 3.5.1 bitset对象的定义和初始化 88 3.5.2 bitset对象上的操作 90 小结 92 术语 92 第4章 数组和指针 95 4.1 数组 96 4.1.1 数组的定义和初始化 96 4.1.2 数组操作 99 4.2 指针的引入 100 4.2.1 什么是指针 100 4.2.2 指针的定义和初始化 101 4.2.3 指针操作 104 4.2.4 使用指针访问数组元素 106 4.2.5 指针和const限定符 110 4.3 C风格字符串 113 4.3.1 创建动态数组 117 4.3.2 新旧代码的兼容 120 4.4 多维数组 122 小结 124 术语 125 第5章 表达式 127 5.1 算术操作符 129 5.2 关系操作符和逻辑操作符 131 5.3 位操作符 134 5.3.1 bitset对象或整值的使用 135 5.3.2 将移位操作符用于IO 137 5.4 赋值操作符 137 5.4.1 赋值操作的右结合性 138 5.4.2 赋值操作具有低优先级 138 5.4.3 复合赋值操作符 139 5.5 自增和自减操作符 140 5.6 箭头操作符 142 5.7 条件操作符 143 5.8 sizeof操作符 144 5.9 逗号操作符 145 5.10 复合表达式的求值 145 5.10.1 优先级 145 5.10.2 结合性 146 5.10.3 求值顺序 148 5.11 new和delete表达式 150 5.12 转换 154 5.12.1 何时发生隐式转换 154 5.12.2 算术转换 155 5.12.3 其他隐式转换 156 5.12.4 显式转换 158 5.12.5 何时需要强制转换 158 5.12.6 命名的强制转换 158 5.12.7 旧式强制转换 160 小结 161 术语 162 第6章 语句 165 6.1 简单语句 166 6.2 声明语句 167 6.3 复合语句(块) 167 6.4 语句作用域 168 6.5 if语句 169 6.6 switch语句 172 6.6.1 使用switch 173 6.6.2 switch中的控制流 173 6.6.3 default标号 175 6.6.4 switch表达式与case标号 176 6.6.5 switch内部的变量定义 176 6.7 while语句 177 6.8 for循环语句 179 6.8.1 省略for语句头的某些部分 180 6.8.2 for语句头中的多个定义 181 6.9 do while语句 182 6.10 break语句 183 6.11 continue语句 184 6.12 goto语句 185 6.13 try块和异常处理 186 6.13.1 throw表达式 186 6.13.2 try块 187 6.13.3 标准异常 189 6.14 使用预处理器进行调试 190 小结 192 术语 192 第7章 函数 195 7.1 函数的定义 196 7.1.1 函数返回 197 7.1.2 函数形参表 198 7.2 参数传递 199 7.2.1 非引用形参 199 7.2.2 引用形参 201 7.2.3 vector和其他容器的形参 206 7.2.4 数组形参 206 7.2.5 传递给函数的数组的处理 209 7.2.6 main:处理命令行选项 210 7.2.7 含有可变形参的函数 211 7.3 return语句 211 7.3.1 没有返回值的函数 212 7.3.2 具有返回值的函数 212 7.3.3 递归 216 7.4 函数声明 217 7.5 局部对象 220 7.5.1 自动对象 220 7.5.2 静态局部对象 220 7.6 内联函数 221 7.7 的成员函数 222 7.7.1 定义成员函数的函数体 223 7.7.2 在外定义成员函数 225 7.7.3 编写Sales_item的构造 函数 225 7.7.4 代码文件的组织 227 7.8 重载函数 228 7.8.1 重载与作用域 230 7.8.2 函数匹配与实参转换 231 7.8.3 重载确定的三个步骤 232 7.8.4 实参转换 234 7.9 指向函数的指针 237 小结 239 术语 240 第8章 标准IO库 243 8.1 面向对象的标准库 244 8.2 条件状态 247 8.3 输出缓冲区的管理 249 8.4 文件的输入和输出 251 8.4.1 文件流对象的使用 251 8.4.2 文件模式 254 8.4.3 一个打开并检查输入文件的 程序 256 8.5 字符串流 257 小结 259 术语 259 第二部分 容器和算法 第9章 顺序容器 263 9.1 顺序容器的定义 264 9.1.1 容器元素的初始化 265 9.1.2 容器内元素的约束 267 9.2 迭代器和迭代器范围 268 9.2.1 迭代器范围 270 9.2.2 使迭代器失效的容器操作 271 9.3 顺序容器的操作 272 9.3.1 容器定义的别名 272 9.3.2 begin和end成员 273 9.3.3 在顺序容器中添加元素 273 9.3.4 关系操作符 277 9.3.5 容器大小的操作 278 9.3.6 访问元素 279 9.3.7 删除元素 280 9.3.8 赋值与swap 282 9.4 vector容器的自增长 284 9.5 容器的选用 287 9.6 再谈string 289 9.6.1 构造string对象的其他方法 290 9.6.2 修改string对象的其他方法 292 9.6.3 只适用于string的操作 293 9.6.4 string的查找操作 295 9.6.5 string对象的比较 298 9.7 容器适配器 300 9.7.1 栈适配器 301 9.7.2 队列和优先级队列 302 小结 303 术语 303 第10章 关联容器 305 10.1 引言:pair 306 10.2 关联容器 308 10.3 map 309 10.3.1 map对象的定义 309 10.3.2 map定义的 310 10.3.3 给map添加元素 311 10.3.4 使用下标访问map对象 311 10.3.5 map::insert的使用 313 10.3.6 查找并读取map中的元素 315 10.3.7 从map对象中删除元素 316 10.3.8 map对象的迭代遍历 316 10.3.9 “单词转换”map对象 317 10.4 set 319 10.4.1 set容器的定义和使用 319 10.4.2 创建“单词排除”集 321 10.5 multimap和multiset 322 10.5.1 元素的添加和删除 322 10.5.2 在multimap和multiset 中查找元素 323 10.6 容器的综合应用:文本查询程序 325 10.6.1 查询程序的设计 326 10.6.2 TextQuery 327 10.6.3 TextQuery的使用 328 10.6.4 编写成员函数 330 小结 332 术语 332 第11章 泛算法 335 11.1 概述 336 11.2 初窥算法 339 11.2.1 只读算法 339 11.2.2 写容器元素的算法 341 11.2.3 对容器元素重新排序的算法 343 11.3 再谈迭代器 347 11.3.1 插入迭代器 348 11.3.2 iostream迭代器 349 11.3.3 反向迭代器 353 11.3.4 const迭代器 355 11.3.5 五种迭代器 356 11.4 泛算法的结构 358 11.4.1 算法的形参模式 359 11.4.2 算法的命名规范 359 11.5 容器特有的算法 361 小结 362 术语 363 第三部分 和数据抽象 第12章  367 12.1 的定义和声明 368 12.1.1 定义:扼要重述 368 12.1.2 数据抽象和封装 369 12.1.3 关于定义的更多内容 372 12.1.4 声明与定义 374 12.1.5 对象 375 12.2 隐含的this指针 376 12.3 作用域 380 作用域中的名字查找 382 12.4 构造函数 385 12.4.1 构造函数初始化式 387 12.4.2 默认实参与构造函数 391 12.4.3 默认构造函数 392 12.4.4 隐式转换 393 12.4.5 成员的显式初始化 396 12.5 友元 396 12.6 static成员 398 12.6.1 static成员函数 400 12.6.2 static数据成员 400 小结 403 术语 403 第13章 复制控制 405 13.1 复制构造函数 406 13.1.1 合成的复制构造函数 409 13.1.2 定义自己的复制构造函数 409 13.1.3 禁止复制 410 13.2 赋值操作符 411 13.3 析构函数 412 13.4 消息处理示例 415 13.5 管理指针成员 419 13.5.1 定义智能指针 421 13.5.2 定义值 425 小结 427 术语 427 第14章 重载操作符与转换 429 14.1 重载操作符的定义 430 14.2 输入和输出操作符 435 14.2.1 输出操作符<>的重载 437 14.3 算术操作符和关系操作符 439 14.3.1 相等操作符 440 14.3.2 关系操作符 441 14.4 赋值操作符 441 14.5 下标操作符 442 14.6 成员访问操作符 443 14.7 自增操作符和自减操作符 446 14.8 调用操作符和函数对象 449 14.8.1 将函数对象用于标准库算法 450 14.8.2 标准库定义的函数对象 451 14.8.3 函数对象的函数适配器 453 14.9 转换与 454 14.9.1 转换为什么有用 454 14.9.2 转换操作符 455 14.9.3 实参匹配和转换 458 14.9.4 重载确定和的实参 461 14.9.5 重载、转换和操作符 464 小结 466 术语 467 第四部分 面向对象编程与泛编程 第15章 面向对象编程 471 15.1 面向对象编程:概述 472 15.2 定义基和派生 473 15.2.1 定义基 474 15.2.2 protected成员 475 15.2.3 派生 476 15.2.4 virtual与其他成员函数 479 15.2.5 公用、私有和受保护的继承 482 15.2.6 友元关系与继承 486 15.2.7 继承与静态成员 486 15.3 转换与继承 487 15.3.1 派生到基的转换 487 15.3.2 基到派生的转换 489 15.4 构造函数和复制控制 490 15.4.1 基构造函数和复制控制 490 15.4.2 派生构造函数 490 15.4.3 复制控制和继承 494 15.4.4 虚析构函数 495 15.4.5 构造函数和析构函数中的虚函数 497 15.5 继承情况下的作用域 497 15.5.1 名字查找在编译时发生 498 15.5.2 名字冲突与继承 498 15.5.3 作用域与成员函数 499 15.5.4 虚函数与作用域 500 15.6 纯虚函数 502 15.7 容器与继承 503 15.8 句柄与继承 504 15.8.1 指针句柄 505 15.8.2 复制未知 507 15.8.3 句柄的使用 508 15.9 再谈文本查询示例 511 15.9.1 面向对象的解决方案 513 15.9.2 值句柄 514 15.9.3 Query_base 515 15.9.4 Query句柄 516 15.9.5 派生 518 15.9.6 eval函数 520 小结 522 术语 523 第16章 模板与泛编程 525 16.1 模板定义 526 16.1.1 定义函数模板 526 16.1.2 定义模板 528 16.1.3 模板形参 529 16.1.4 模板形参 531 16.1.5 非模板形参 533 16.1.6 编写泛程序 534 16.2 实例化 535 16.2.1 模板实参推断 537 16.2.2 函数模板的显式实参 540 16.3 模板编译模 542 16.4 模板成员 545 16.4.1 模板成员函数 548 16.4.2 非形参的模板实参 551 16.4.3 模板中的友元声明 552 16.4.4 Queue和QueueItem的友元 声明 554 16.4.5 成员模板 556 16.4.6 完整的Queue 558 16.4.7 模板的static成员 559 16.5 一个泛句柄 560 16.5.1 定义句柄 561 16.5.2 使用句柄 562 16.6 模板特化 564 16.6.1 函数模板的特化 565 16.6.2 模板的特化 567 16.6.3 特化成员而不特化 569 16.6.4 模板的部分特化 570 16.7 重载与函数模板 570 小结 573 术语 574 第五部分 高级主题 第17章 用于大程序的工具 579 17.1 异常处理 580 17.1.1 抛出的异常 581 17.1.2 栈展开 582 17.1.3 捕获异常 583 17.1.4 重新抛出 585 17.1.5 捕获所有异常的处理代码 586 17.1.6 函数测试块与构造函数 586 17.1.7 异常层次 587 17.1.8 自动资源释放 589 17.1.9 auto_ptr 591 17.1.10 异常说明 595 17.1.11 函数指针的异常说明 598 17.2 命名空间 599 17.2.1 命名空间的定义 599 17.2.2 嵌套命名空间 603 17.2.3 未命名的命名空间 604 17.2.4 命名空间成员的使用 606 17.2.5 、命名空间和作用域 609 17.2.6 重载与命名空间 612 17.2.7 命名空间与模板 614 17.3 多重继承与虚继承 614 17.3.1 多重继承 615 17.3.2 转换与多个基 617 17.3.3 多重继承派生的复制控制 619 17.3.4 多重继承下的作用域 620 17.3.5 虚继承 622 17.3.6 虚基的声明 624 17.3.7 特殊的初始化语义 625 小结 628 术语 628 第18章 特殊工具与技术 631 18.1 优化内存分配 632 18.1.1 C++中的内存分配 632 18.1.2 allocator 633 18.1.3 operator new函数和 operator delete函数 636 18.1.4 定位new表达式 638 18.1.5 显式析构函数的调用 639 18.1.6 特定的new和delete 639 18.1.7 一个内存分配器基 641 18.2 运行时识别 646 18.2.1 dynamic_cast操作符 647 18.2.2 typeid操作符 649 18.2.3 RTTI的使用 650 18.2.4 type_info 652 18.3 成员的指针 653 18.3.1 声明成员指针 653 18.3.2 使用成员的指针 655 18.4 嵌套 658 18.4.1 嵌套的实现 658 18.4.2 嵌套作用域中的名字查找 661 18.5 联合:节省空间的 662 18.6 局部 665 18.7 固有的不可移植的特征 666 18.7.1 位域 666 18.7.2 volatile限定符 668 18.7.3 链接指示:extern "C" 669 小结 672 术语 673 附录 标准库 675 索引 703
Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这款实例会对你有所帮助。 Calendar万年历 1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除,从账户中取出amt,如果amt>账户余额抛出异常,一个实体Bean可以表示不同的数据实例,我们应该通过主键来判断删除哪个数据实例…… ejbCreate函数用于初始化一个EJB实例 5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口函数得到远程接口的引用,用远程接口的引用访问EJB。 EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户可以在终端上直接地使用它,但是它的主要作用是供程序使用的。本规范尝试满足大主机、微主机、个人工作站、和TACs 的不同需求。例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天通信演示代码 2个目标文件,一个服务器,一个客户端。 Java Telnet客户端实例源码 一个目标文件,演示Socket的使用。 Java 组播组中发送和接受数据实例 3个目标文件。 Java读写文本文件的示例代码 1个目标文件。 java俄罗斯方块 一个目标文件。 Java非对称加密源码实例 1个目标文件 摘要:Java源码,算法相关,非对称加密   Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。   设定字符串为“张三,你好,我是李四”   产生张三的密钥对(keyPairZhang)   张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节   通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后的公钥,将其解码,李四用张三的公钥加密信息,并发送给李四,张三用自己的私钥解密从李四处收到的信息…… Java利用DES私钥对称加密代码实例 同上 java聊天室 2个目标文件,简单。 java模拟掷骰子2个 1个目标文件,输出演示。 java凭图游戏 一个目标文件,简单。 java求一个整数的因子 如题。 Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥   Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥,通常应对私钥加密后再保存、如何从文件中得到公钥编码的字节数组、如何从字节数组解码公钥。 Java数据压缩与传输实例 1个目标文件 摘要:Java源码,文件操作,数据压缩,文件传输   Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印   util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码加以改进做成小工具。 Java右键弹出菜单源码 简单 Java圆形按钮实例代码,含注释 两个目标文件,自绘button。 Java圆形电子时钟源代码 1个目标文件 内容索引:JAVA源码,系统相关,电子钟   用JAVA编写的指针式圆形电子钟,效果图如下所示,其实代码很简单,希望对你有帮助。 Message-Driven Bean EJB实例源代码 2个目标文件 摘要:Java源码,初学实例,EJB实例   Message-Driven Bean EJB实例源代码,演示一个接收购物订单的消息驱动Bean,处理这个订单同时通过e-mail的形式   //给客户发一个感谢消息,消息驱动Bean必须实现两个接口MessageDrivenBean和MessageListener   在对象创建的过程中将被容器调用,onMessage函数方法接收消息参数,将其强制转为合适的消息,同时打印出消息的内容。同时一个mail note将被发送给消息发送者,发送一个e-mail通知给由recipient参数确定的e-mail账号,查询mail 服务器的会话……   还包括消息客户端程序,通过连接创建会话。创建发送者和映射消息。发送消息,同时对文本进行少量修改,发送end-of-messages消息,最后关闭连接。 Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器   Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3个目标文件 第一步:运行ServerData.java 启动服务器,然后服务器处于等待状态 第二步:运行LoginData.java 启动(客户端)登陆界面 输入用户名 ip为本机localhost 第三步:在登陆后的界面文本框输入文本,然后发送 可以同时启动多个客户端 实现群聊。 浮动的广告 嵌套在html中 各种EJB之间的调用示例 7个目标文件 摘要:Java源码,初学实例,EJB调用实例   各种EJB之间的调用源码示例,用远程接口的引用访问EJB、函数将被FirstEJB调用,同时它将调用secondEJB 基于JAVA的UDP服务器模源代码 2个目标文件 摘要:Java源码,网络相关,UDP   基于JAVA的UDP服务器模源代码,内含UDP服务器端模和UDP客户端模两个小程序,向JAVA初学者演示UDP C/S结构的原理。 简单聊天软件CS模式 2个目标文件 一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模(源代码) 15个目标文件 摘要:Java源码,初学实例,基于EJB的真实世界模   基于EJB的真实世界模,附源代码,部分功能需JSP配合完成。 J2ME优化压缩PNG文件 4个目标文件 内容索引:JAVA源码,综合应用,J2me游戏,PNG,图形处理   这是个J2ME控制台程序,它能剔除PNG文件中的非关键数据段,减少文件大小从而达到压缩图片的目的。而图片的质量并不会受到损失。使用时候只需在控制台窗口执行jar就可以了。 Java 3DMenu 界面源码 5个目标文件 内容索引:Java源码,窗体界面,3DMenu   Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看   Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,系统相关,数字签名,数字证书   Java 数字签名、数字证书的相关实例。   关于数字签名:产生RSA密钥对(myKeyPair),得到RSA密钥对,产生Signature对象,对用私钥对信息(info)签名,用指定算法产生签名对象,用私钥初始化签名对象,将待签名的数据传送给签名对象(须在初始化之后),用公钥验证签名结果,使用公钥初始化签名对象,用于验证签名。   数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录   一个Java+ajax写的登录实例,附有JAVA源文件,JAVA新手朋友可以学习一下。 JAVA+JSP的聊天室 8个目标文件 简单 JavaScript万年历 显示出当前时间及年份,还可以选择年份及月份和日期 Java编写的HTML浏览器 一个目标文件 摘要:Java源码,网络相关,浏览器   Java编写的HTML浏览器源代码,一个很简单甚至不算是浏览器的HTML浏览器,使用方法:   可直接输入文件名或网络地址,但必需事先连入网络。 Java编写的山寨QQ,多人聊天+用户在线 21个目标文件 摘要:JAVA源码,媒体网络,山寨QQ,Java聊天程序   Java编写的山寨QQ,多人聊天+用户在线,程序分服务端和客户端,典C/S结构,   当用户发送第一次请求的时候,验证用户登录,创建一个该qq号和服务器端保持通讯连接得线程,启动该通讯线程,通讯完毕,关闭Scoket。   QQ客户端登录界面,中部有三个JPanel,有一个叫选项卡窗口管理。还可以更新好友列表,响应用户双击的事件,并得到好友的编号,把聊天界面加入到管理,设置密码保护等。 Java编写的网页版魔方游戏 内容索引:JAVA源码,游戏娱乐,魔方,网页游戏   Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像、数据初始化、矩阵乘法、坐标旋转、判断是否是顺时针方向排列、鼠标按下、放开时的动作等,都可在本源码中得以体现。 Java编写的显示器显示模式检测程序 2个目标文件 内容索引:JAVA源码,系统相关,系统信息检测   用JAVA编写了一个小工具,用于检测当前显示器也就是显卡的显示模式,比如分辨率,色彩以及刷新频率等。 Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字   Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。 Java吃豆子游戏源代码 6个目标文件 内容索引:JAVA源码,游戏娱乐,JAVA游戏源码   JAVA编写的吃豆子游戏,似疯狂坦克一样,至少界面有点像。大家可以看截图。 Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板   使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO与文件复制操作实例 16个目标文件 内容索引:Java源码,初学实例,二进制,文件复制   Java二进制IO与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,文件操作,权限控制   Java访问权限控制,为Java操作文件、写入文件分配合适的权限,定义写到文件的信息、定义文件,输出到c:/hello.txt、写信息到文件、关闭输出流。 Java绘制图片火焰效果 1个目标文件 摘要:Java源码,图形操作,火焰效果   Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标,Y坐标、得到X坐标,Y坐标值、绘制火焰效果Image…… Java加密解密工具集 JCT v1.0源码包 5个目标文件 内容索引:JAVA源码,综合应用,JCT,加密解密   WDSsoft的一款免费源代码 JCT 1.0,它是一个Java加密解密常用工具包。 Java局域网通信——飞鸽传书源代码 28个目标文件 内容索引:JAVA源码,媒体网络,飞鸽传书   Java局域网通信——飞鸽传书源代码,大家都知道VB版、VC版还有Delphi版的飞鸽传书软件,但是Java版的确实不多,因此这个Java文件传输实例不可错过,Java网络编程技能的提升很有帮助。 Java聊天程序,包括服务端和客户端 2个目标文件,如题。 Java目录监视器源程序 9个目标文件 内容索引:JAVA源码,综合应用,目录监视   用JAVA开发的一个小的目录监视系统,系统会每5秒自动扫描一次需要监视的目录,可以用来监视目录中文件大小及文件增减数目的变化。 Java日期选择控件完整源代码 14个目标文件 内容索引:JAVA源码,系统相关,日历,日期选择   Java语言开发的简洁实用的日期选择控件,源码文件功能说明:   [DateChooser.java] Java 日期选择控件(主体) [public]   [TablePanel.java] 日历表格面板   [ConfigLine.java] 控制条   [RoundBox.java] 限定选择控件   [MonthMaker.java] 月份表算法   [Pallet.java] 调色板,统一配色 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP   Java实现HTTP连接与浏览,Java源码下载,输入html文件地址或网址,显示页面和HTML源文件,一步步的实现过程请下载本实例的Java源码,代码中包括丰富的注释,对学习有帮助。 Java实现的FTP连接与数据浏览程序 1个目标文件 摘要:Java源码,网络相关,FTP   Java实现的FTP连接与数据浏览程序,实现实例化可操作的窗口。   部分源代码摘录:   ftpClient = new FtpClient(); //实例化FtpClient对象   String serverAddr=jtfServer.getText(); //得到服务器地址   String user=jtfUser.getText(); //得到用户名   String pass=jtfPass.getPassword().toString(); //得到密码   ftpClient.openServer(serverAddr); //连接到服务器   ftpClient.login(user,pass); //在服务器上注册   InputStream is=ftpClient.list(); //得到服务器目录与文件列表输入流   StringBuffer info=new StringBuffer(); //实例化StringBuffer对象,用于输出信息   int ch;   while ((ch=is.read())>=0){ //未读完列表,则继续   info.append((char)ch); //增加信息   …… Java实现的点对点短消息发送协议(smpp)开发包源码 70个目标文件,如题。 Java实现的放大镜效果附有源文件 1个目标文件 内容索引:Java源码,初学实例,放大镜,哈哈镜   Java实现的放大镜效果附有源文件,编译环境最近出了问题,因此没有测试,也没有抓到图,希望各位自行测试一下。 Java实现跟踪鼠标运行坐标的源码 1个目标文件 内容索引:JAVA源码,系统相关,鼠标钩子   Java编写的一个小程序,用以实现跟踪鼠标的运行位置(坐标),程序很小,很实用,暂时抓不到截图。 Java实现移动的遮照效果 1个目标文件 摘要:Java源码,初学实例,遮照效果   Java实现移动的遮照效果,先实现椭圆形的遮罩,实例化媒体加载器,最后在创建缓冲区中的图像形成遮罩效果,而且它是会移动的。 Java鼠标拖拽功能 1个目标文件 Netbeans平台下实现的JAVA 拖放效果的一个实例,包括源代码和所需的图片资源。 (运行后会全屏显示窗体,没有关闭按钮,可使用快捷键Ctrl + F4关闭~) Java图片倒影效果实例源码 1个目标文件 摘要:Java源码,图形操作,图片倒影   Java图片倒影效果实例源码,有意思也很有参考价值的一个Java图像处理小程序,先读取图像然后进行图像重绘,产生倒影的效果,仅供参考。 java网络五子棋的源代码 7个目标文件 AVA网络五子棋,实现基本功能,无多余花哨内容,适合大学生课程设计学习使用,内含完整可运行源代码及运行指导视频,Eclipse环境。 Java文件选择器源代码 2个目标文件 摘要:Java源码,文件操作,文件选择器   Java文件选择器源代码 Java文字跑马灯与信息窗口 1个目标文件 摘要:Java源码,文件操作,跑马灯   Java文字跑马灯效果与信息窗口,将一段文字按照滚动的方式显示出来,在网页设计中比较常见,本例使用Java实现文字跑马灯效果。 Java写的ATM机取款模拟程序 9个目标文件 内容索引:JAVA源码,综合应用,ATM,JAVA,模拟   基于Java技术,只实现了ATM机的取款过程,有兴趣和有能力的高手可以再加以改进,这样就更完美了。可作为Java初学者《面向对象》编程的一个很好范例。     在这个程序中,用到以下JAVA库:      dataAccess(数据操作):包含用于数据库的相关操作   atmScreen(ATM屏幕):主要创建各操作窗体和相应按钮事件   Account(用户帐户):包含用户信息的验证、余额查询和扣钱等方法   readCard(读卡机):包含读取用户卡号和退卡(退出系统)   moneyMac(取钱机):只用于打印清单   Atm(系统):系统主方法的开始,负责调用其他 Java写的巨LCD液晶时钟显示屏 8个目标文件 内容索引:JAVA源码,综合应用,电子钟,LCD,液晶   一个巨LCD数字电子时钟,用JAVA写的,运行截图如上示。它还带有右键菜单,LCD颜色可以变换等。 Java用GZIP压缩解压文件 1个目标文件 摘要:Java源码,文件操作,GZIP   Java使用GZIP压缩解压文件,如果你正在使用Java开发文件压缩或解压的功能,那么Gzip应该来说是比较值得参考的,那么本实例或许正是您需要的,Java基于Gzip的文件压缩与解压程序源代码,供源码下载者参考。 Java用Zip压缩多个文件实例源码 1个目标文件 摘要:Java源码,文件操作,压缩文件   Java用Zip压缩多个文件,一个Java文件操作小实例,用ZIP同进压缩多个文件,实际是打开文件读取,然后再利用ZipEntry实例化待压缩的条目列表,将ZIP条目列表写入输出流,从源文件得到文件输入流,写入缓冲数据等。 Java游戏使命的召唤源码 5个目标文件 内容索引:JAVA源码,游戏娱乐,Java游戏源码,使命的召唤   Java游戏使命的召唤源码,又名:Call of Duty,MFORMA超精典游戏,有兴趣的可以重新编译学习一下。 Java源码的仿QQ聊天程序 如题 Java中的Blowfish对称密钥加密算法和实例 2个目标文件 内容索引:Java源码,算法相关,Blowfish,JAVA加密,对称密钥算法   JAVA中的Blowfish加密属于对称密钥算法,如果知道密钥,则可以对加密后的数据解密,但如果如果不知道密钥,基本上是不可能的,因此,这就决定了它的先天不足,就是带来的密钥的管理问题。 Java中的SSL及HTTPS协议实例源码 1个目标文件 摘要:Java源码,网络相关,HTTPS协议   Java中的SSL及HTTPS协议实例源码,使用SSL套接字的HTTPS服务器端,接受客户端的一个连接,并返回Hello,world.   本例中使用8080端口创建SSL服务器套接字,返回缺省的SocketFactory对象,生成PrintWriter对象,用于输出信息。 Java自定义光标程序源码 1个目标文件 摘要:Java源码,窗体界面,自定义光标   Java自定义光标程序源码,将光标定义成其它形式的图标,利用ToolKit对象得到图像,实例化自定义光标对象,增加组件等。 Jav动画图标源码(显示GIF图像) 1个目标文件 摘要:Java源码,图形操作,动画图标   Jav动画图标源码(显示GIF图像),学习如何连续加载GIF图像从而生成动画图标,先创建一个用于显示动画图标的数组,创建构造函数,初始化数组,重载组件绘制方法,实例化Timer对象显示动画,增加组件到窗口上。 JSP树菜单 DTree html+js实现 Notebook源码,Java记事本 2个目标文件 摘要:Java源码,文字字符,Java记事本   Java记事本:Notebook源码下载,虽然是个功能不多的记事本,但通过这个Java程序你可以学习到不少小技巧呢!比如创建界面、安装各种监听器,在窗体上布局主菜单,保存用户编辑的文件,以及如何使用"另存为"对话框保存文件,如何新建和打开一个文档等,源代码内包括了相当多的注释,是Java新手学习JAVA编程的好范例。   当用户按下窗口的“关闭”时,会自动调用此方法。 PDF分割与合并源代码 3个目标文件 能把一个PDF分割成多个单页的PDF,把多个PDF合并成一个PDF。 QR解码的Java实现程序 25个目标文件 内容索引:JAVA源码,媒体网络,QR解码,Java   用Java实现QR解码的源程序代码。 编译原理--LR(1)分析表构造(JAVA) 8个目标文件 如题 传奇私服登录器Java版附源代码 2个目标文件,如题。 单机版java五子棋V1.1 5个目标文件 完整的单机版java五子棋游戏,主要是判定胜负的算法,使用数组进行遍历,很容易理解。 很强的Java加密解密算法源码 3个目标文件 内容索引:Java源码,算法相关,JAVA算法,加密解密   很强的JAVA加密、解密算法源码,一共有6种算法可供选择,另外还可以直接生成ZIP压缩文件。 简单的注册与登录功能 6个目标文件 一个简单的用户登录界面 要连接数据库的 有登陆 注册功能 仅供初学者学习 简单模拟的J2ME潜艇大战源代码 4个目标文件 内容索引:JAVA源码,游戏娱乐,J2ME手机游戏,潜艇大战   简单模拟的J2ME手机游戏潜艇大战的源代码,界面有些粗糙,不过基本功能都实现了,发弹,躲闪等,可以帮助新手提高J2ME技术。 局域网广播系统java源码 如题 java游戏 可实现网上对战和人机对战 7个目标文件 雷电游戏JAVA版源程序 8个目标文件 这是一个简单的Java仿雷电游戏(源码见包内),共设置有三关三个小BOSS。采用有GreenJVM发布,因此可以运行在未装载JRE的Windows系统之上。 网络蚂蚁Java版 14个目标文件 用Java实现的网络蚂蚁,功能强大,方便上传下载,断点续传等操作 网页浏览器 如题 java学生成绩系统(图形界面) 14个目标文件 如题。 java学生课程管理系统 6个目标文件 如题。 一个较初级的EJB商业应用的例子 如题 一个支持servlet的web服务器 14个目标文件 如题。 用Java加密实现DES、RSA及SHA的加密算法 9个目标文件 如题。 用java写的SFTP代码 用java实现的Tftp(Sftp)客户端与服务器程序。在这个程序中用到了一个“状态”的机制:客户端与服务器端在开始运行时有相同的状态,通过用户的输入或程序内部运行的机制,程序可以转到不同的状态,在不同的状态下程序实现了不同的功能。 用jdom解析xml 1个目标文件 要使用jdom解析xml文件,需要下载jdom的包,我使用的是jdom-1.1。解压之后,将lib文件夹下的.jar文件以及build文件夹下的jdom.jar拷贝到工程文件夹下,然后就可以使用jdom操作xml文件了。 copass源代码 Compass是一个强大的,事务的,高性能的对象/搜索引擎映射(OSEM:object/search engine mapping)与一个Java持久层框架. Compass实现了通过注册Hibernate的相关事件实现了数据的实时索引.. DataBuffer在Java中使用ADO.NET 本源码的作者对ADO.Net有着相当深厚的感情,有着对JAVA中DataBuffer库运用的出色理解。它是开源项目javadesktop中的一个子项目,通过它你可以真正的理解DataSet、DataTable、DataRow……库的使用。对这方面不太熟的开发者绝对有帮助。 HAHA CHAT Java仿QQ聊天程序源代码 iCHAT聊天室基于Java 内容索引:JAVA源码,媒体网络,iChat,Java聊天室   iChat LE 1.1版源码,一个比较大的JAVA版聊天室程序,可能要用到DLL文件,压缩包内已经有了,一年前的程序。 IP定位器 J2ME黑白棋游戏手机版 v2.1完整源码 J2ME冒险游戏CASPER源代码 J2me月光战机游戏源码 JasperReports 报表库v3.5 Java24点游戏逼真图形版代码 Java 3D魔方游戏源码及中文注释包 内容索引:JAVA源码,游戏娱乐,JAVA3D,魔方游戏   很强的JAVA 3D魔方游戏,这是源码及中文注释包,作者的开发文档和思路都在里面,对学习很有帮助! allin.dev 重载了ListView,更好的实现! copass源代码 Java (Jsp)制作简单的表单程序 java Socket通信实现 Java 版的酒店系统,貌似完整 Java 电梯模拟程序 v2.0 Java 飞机订票 Java 高考信息管理系统 SQL数据库 java 一个消息发布网站 Java+MsSQL超市进销存(毕业设计及答辩资料) Java+sqlserver2000做的员工管理系统 Java+SQL信用卡管理系统源代码 Java+XML日程提醒系统 Java+XML写的RSS阅读器 JAVA版Swing星际争霸游戏源代码 Java半透明图片实现的步骤及源代码 JAVA帮助视图组件库 Help GUI 1.1源代码 Java毕业论文:搜索引擎系统附源代码 JAVA毕业设计_员工管理系统含文档 Java毕业设计一款J2me飞行射击游戏 Java仓库管理系统,Access数据库 Java超市管理,SQL2000+源代码 Java超市进销存系统 Java大CERP进销存系统 Java电子相册源码 Java赌神游戏网络版源代码 JAVA短信网关平台(值得一看) Java多用户聊天室程序(毕业设计) Java仿Vista界面风格的登录窗口 Java仿千千静听音乐播放器源代码 Java火影忍者游戏源代码 Java机车狂飙源代码 JAVA开发的打字软件源程序 Java开发的简单WEB服务器源码 Java聊天程序(JBuilder) Java聊天软件Visual Chat v1.91源码 Java模仿的MSN聊天软件 Java企业人事管理系统源码 JAVA轻量级的MVC框架应用实例 Java软件度量源码 Java声音播放程序源代码 JAVA实现CLDC与MIDP底层编程的代码 JAVA实现超级玛丽 Java实现的视频播放程序源码 Java手机短信项目源码 Java手机游戏大富翁源代码+注释 Java手机与计算机互发彩信源码 Java坦克大战网络对战版源代码 Java跳棋(基于SWT) Java通讯录手机版源码 Java图片翻折,将图像压扁 Java图书馆管理系统源程序 JAVA图书馆管理系统源码 Java图像文件的缩小与放大 Java推箱子游戏(50关+音效) JAVA网络抓包程序 Java文件切割器源代码 java项目源码在线相册系统 Java写的天气预报软件 Java写的图片幻灯片切换特效 Java写的一个mp3播放器 Java学生信息管理系统源码包 Java用的在线地图浏览模块 Java游戏沙丘城堡源代码 Java游戏中斜视角编辑器及引擎源代码 Java约瑟夫环演示Applet源码 Java中的EJB编程实例代码 Java转换xml JLoading Java版的Mp3下载工具 JSP 动态数据菜单 JSP 学生管理系统(全部代码+数据库) jsp+servlet+javabean+mysql党员信息管理系统 jsp高校科研项目管理系统 JSP开发的项目跟踪系统 jsp生产管理系统 msn聊天程序Java仿真代码 P2P--多用户在线聊天室(Java源码) P2P源码 Azureus 2.5.0.2(JAVA) Skype 4.0 Java版源码及开发文档 SnakeScript Java游戏脚本引擎 v1.1 Tsinghua IP 清华大学学生写的一个有关IP的Java程序 Visualvm 基于JAVA的CPU硬件资源管理器源程序 weblogic+j2ee构建音乐网站(原代码+数据库) web综合教学管理系统 YOYOPlayer 基于Java的网络播放器源代码 宾馆管理系统 餐饮门户 超市购物系统 车间管控 打地鼠游戏 单位固定资产登记管理系统JAVA版 电子书店管理系统 分离SQL Server数据库 基于BS结构的Java可视化工作流定制软件 基于J2ME的Java游戏梦幻炸弹人源程序 基于JAVA的ICQ系统 基于Java的mp3播放器源代码 基于JAVA的日程提醒簿 基于Java的小人事管理系统,带数据库 基于Java的邮件服务器源程序 基于MVC的Java资源管理器 v2.0 季风进销存管理系统(JSP版) 家庭多媒体播放器 开源Winzip压缩工具Java版源码 客户管理系统 Alfresco Content Management 乐趣大购物系统 似QQ的聊天软件JAVA版源码(附设计文档) 连接postsql数据库的java代码 泡泡堂战车游戏JAVA版源码 配置ODBC数据源 企业进销存管理系统 轻松商城系统 手机游戏J2ME毕业设计 书籍管理系统 网络电视源代码TV-Browser 蜀山剑侠传游戏J2ME手机版源代码 网上书店 物业管理系统毕业设计+源码 销售预测系统PDP系统 选修课程管理系统V1.2.3 阳光酒店管理系统 一款Java网络格斗游戏源码 用iText库制作PDF文档 用JAVA做的聊天软件,有安装程序和源代码 在Servlet中连接数据库的Java代码 中国移动业务管理系统源码(SSH框架) JAVA开源包 Spring4GWT GWT Spring 使得在 Spring 框架下构造 GWT 应用变得很简单,提供一个易于理解的依赖注入和RPC机制。 Java扫雷游戏 JVMine JVMine用Applets开发的扫雷游戏,可在线玩。 public class JVMine extends java.applet.Applet 简单实现!~ 网页表格组件 GWT Advanced Table GWT Advanced Table 是一个基于 GWT 框架的网页表格组件,可实现分页数据显示、数据排序和过滤等功能! Google Tag Library 该标记库和 Google 有关。使用该标记库,利用 Google 为你的网站提供网站查询,并且可以直接在你的网页里面显示搜查的结果。 github-java-api github-java-api 是 Github 网站 API 的 Java 语言版本。 java缓存工具 SimpleCache SimpleCache 是一个简单易用的java缓存工具,用来简化缓存代码的编写,让你摆脱单调乏味的重复工作!1. 完全透明的缓存支持,对业务代码零侵入 2. 支持使用Redis和Memcached作为后端缓存。3. 支持缓存数据分区规则的定义 4. 使用redis作缓存时,支持list的高级数据结构,更适合论坛帖子列表这种的数据 5. 支持混合使用redis缓存和memcached缓存。可以将列表数据缓存到redis中,其他kv结构数据继续缓存到memcached 6. 支持redis的主从集群,可以做读写分离。缓存读取自redis的slave节点,写入到redis的master节点。 Java对象的SQL接口 JoSQL JoSQL(SQLforJavaObjects)为Java开发者提供运用SQL语句来操作Java对象集的能力.利用JoSQL可以像操作数据库中的数据一样对任何Java对象集进行查询,排序,分组。 搜索自动提示 Autotips AutoTips是为解决应用系统对于【自动提示】的需要(如:Google搜索), 而开发的架构无关的公共控件, 以满足该需求可以通过快速配置来开发。AutoTips基于搜索引擎Apache Lucene实现。AutoTips提供统一UI。 WAP浏览器 j2wap j2wap 是一个基于Java的WAP浏览器,目前处于BETA测试阶段。它支持WAP 1.2规范,除了WTLS 和WBMP。 Java注册表操作 jared jared是一个用来操作Windows注册表的 Java 库,你可以用来对注册表信息进行读写。 GIF动画制作工具 GiftedMotion GiftedMotion是一个很小的,免费而且易于使用图像互换格式动画是能够设计一个有趣的动画了一系列的数字图像。使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源库(可用于发送数据给iOS应用程序)。 重复文件检查工具 FindDup.tar FindDup 是一个简单易用的工具,用来检查计算机上重复的文件。 OpenID的Java客户端 JOpenID JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor 的文件持久化组件,以及一个高吞吐量的可靠事务日志组件。 Google地图JSP标签库 利用Google:maps JSP标签库就能够在你的Web站点上实现GoogleMaps的所有功能而且不需要javascript或AJAX编程。它还能够与JSTL相结合生成数据库驱动的动态Maps。 OAuth 实现框架 Agorava Agorava 是一个实现了 OAuth 1.0a 和 OAuth 2.0 的框架,提供了简单的方式通过社交媒体进行身份认证的功能。 Eclipse的JavaScript插件 JSEditor JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接池的性能,根据某些测试数据发现,BoneCP是最快的连接池。BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的库,用于异步输出记录的简单小框架用于高并发下数据输出使用。 Java转C++代码工具 J2C J2C 将 Java 代码转成 C++ 代码,这是源码级别的转换,输出的 C++ 代码是有效的代码。 OSGi 分布式通讯组件 R-OSGi R-OSGi 是一套适用于任意满足 OSGi 架构的分布式通讯组件。它以 jar 的形式发布,部署容易,使用也较为便捷。 Java邮箱地址验证 jaev jaev 是一个用来验证电子邮箱地址是否有效的 Java 项目。 Java的FastCGI网关 jFastCGI jFastCGI 是一个可以让Tomcat 之的Servlet容器支持运行PHP和其它fastcgi应用程序,将Servlet容器充当成一个FastCGI 的网关。 Java 绘图框架 JGraphEd JGraphEd 是一个 Java 的图形编辑应用和绘图框架。 Java 穿越NAT方案 JSTUN.tar JSTUN 是另外一个用来解决穿越 NAT 进行通讯的 Java 解决方案,是 STUN 协议的 Java实现。 在浏览器上运行Java程序 Doppio DoppioVM 是一个可在浏览器上直接运行 Java 项目的系统,无需任何插件支持。目前它包含一个完整的虚拟机以及一个 javap 字节码反汇编器。 brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准 OAuth OAuth 协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息(如用户名与密 码),即第三方无需使用用户的用户名与密码就可以申请获得该用户资源的授权,因此OAUTH是安全的。同时,任何第三方都可以使用OAUTH认证服务,任 何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权 的标准。 Java的命令行处理库 JArgs JArgs 是一个 Java 语言用来处理应用程序的命令行参数的库。 高性能内存消息和事件驱动库 Chronicle Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装库) 语音识别程序 SpeechLion.tar SpeechLion 是一个语音识别程序,主要用来处理桌面命令,基于 Sphinx-4 语音识别引擎开发。用户可以通过该软件来控制 Linux 桌面,例如打开google搜索、鼠标点击、下一窗口、打开帮助、静音等操作。 Java发送短信包 LemonSMS LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、数据压缩、颜色转换、键盘鼠标事件转换等等。 最短路径算法实现 k-shortest-paths 这是一个实现了 Yen 的排名算法的无环路径的项目 Java日历空间 JCalendarButton JCalendarButton是一个简单的java swing日历选择控件。它能够在日期输入框后面弹出一个日历。 网页搜索爬虫 BlueLeech BlueLeech是一个开源程序,它从指定的URL开始,搜索所有可用的链接,以及链接之上的链接。它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ( ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码图片。 Java 命令行解析器 JOpt Simple JOpt Simple 是一个简单的、测试驱动的命令行解析器,支持 POSIX getopt() 和 GNU getopt_long() Java的HTTP代理服务器 Smart Cache Smart Cache 是一个采用 Java 开发的 HTTP/1.1代理服务器,也可以用来作为Web的缓存系统。 高性能的JSON处理 Jackson Jackson 是一个 Java 用来处理 JSON 格式数据的库,性能非常好。 哈希计算工具 java-hash 用来计算 MD5、SHA 哈希算法的 Java 库,支持 "MD5", "SHA", "SHA-1", "SHA-256", "SHA-384", "SHA-512". 高性能RPC框架 nfs-rpc nfs-rpc是一个集成了各种知名通信框架的高性能RPC框架,目前其最好的性能为在采用grizzly作为通信框架,采用pb作为序列化/反序列化时,tps为168k次/秒。 其支持的功能主要为: 1、透明的调用远端服务器提供的功能,例如UserService.getUserNameById; 2、单连接或多连接; 3、连接复用,因此在多线程获取连接时无需阻塞; 4、同步调用; 5、超时机制; 6、支持多种通信框架(Mina/Netty/Grizzly),支持多种序列化/反序列化(Java/Hessian/PB); 7、支持自定义通信协议,可完全替换NFS-RPC自带的协议。 淘宝开放平台JAVA版SDK top4java 设计原则 容易维护扩展(不需要修改主就可以添加新的API支持) 注入解释器(依据不同的返回格式注入相应的解释器) 集中管理请求参数与参数映射 以运行时异常的方式来管理错误的响应 使用泛来做强编程 多协议扩展支持(REST, RPC, SOAP, etc) Rails3消息队列系统 Sidekiq Sidekiq 为 Rails 3 应用程序提供一个高效的消息队列系统。 Java文件上传组件 COS FAT文件系统读写库 fat32-lib fat32-lib 是一个用来读写 FAT 16/32 格式文件系统的纯 Java 库(纯的)。 Eclipse的HTML格式化插件 Eclipse Tidy Eclipse HTML Tidy 是一款 Eclipse 的插件,用来对 HTML 文件内容进行清洗和格式化处理。它采用的是 JTidy 库对HTML进行处理。 INI文件操作库 [ini4j] [ini4j] 是一个简单的Java库,用来读写Windows的ini配置文件。同时还包含一个 Java Perferences API 的实现。 拒绝服务测试工具 Port Groper PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络的ddos,而是使用大量的代理作为bots发起DDOS。Port Groper可以与用测试防火墙,干扰web 统计脚本的跟踪,为网站增加流量..往好了用什么都能干,就是不能让一个网站下线。 FTP客户端Java库 ftp4j ftp4j是一个FTP客户端Java库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括:通过 TCP/IP直接连接,通过FTP代理、HTTP代理、SOCKS4/4a代理和SOCKS5代理连接,通过SSL安全连接。 Java的命令行进度条 JCmdLineProgess JCmdLineProgess 是一个 Java 库,用来提供在命令行中显示进度条的功能。 Tomcat 安装apr 支持 Tomcat Native Tomcat Native 这个项目可以让 Tomcat 使用 Apache 的 apr 包来处理包括文件和网络IO操作,以提升性能。 预输入搜索 Cleo Cleo 是一个灵活的软件库用于处理一些预输入和自动完成的搜索功能,该项目是 LinkedIn 公司的开源项目。 SwingSet 增强现实标记跟踪软件库 AccuTag AccuTag是AR(增强现实)标记跟踪软件库。它利用GPGPU的快速和精确跟踪。 条形码扫描和识别程序 LVBarcode LVBarcode 支持下列的条形码格式:Codabar,I2of5,Code39,ExCode39?,EAN-8,EAN-13,Code128 A,Code128 B,Code128 C,MSI,UPC-A,UPC-E. 中文转拼音库 pinyin4j Pinyin4j是一个流行的Java库,支持中文字符和拼音之间的转换。拼音输出格式可以定制。 异步HTTP客户端开发包 HttpAsyncClient HttpAsyncClient 是一个异步的 HTTP 客户端开发包,基于 HttpCore NIO 和 HttpClient 组件。HttpAsyncClient 的出现并不是为了替换 HttpClient,而是作为一个补充用于需要大量并发连接,对性能要求非常高的基于HTTP的原生数据通信,而且提供了事件驱动的 API。 NIO网络框架 xSocket xSocket是一个轻量级的基于nio的服务器框架用于开发高性能、可扩展、多线程的服务器。该框架封装了线程处理、异步读/写等方面。 Java多线程程序死锁检查 JCarder JCarder 是一个用来查找多线程应用程序中一些潜在的死锁,通过对 Java 字节码的动态分析来完成死锁分析。 Java的Flash解析、生成器 jActionScript jActionScript 是一个使用了 JavaSWF2 的 Flash 解析器和生成器。提供了一个基于对象模的 ActionScript 字节码,并提供了 ActionScript 字节码统计工具。 Java重加载工具 JReloader JReloader 是一个用来重新加载class文件而无需重启JVM的工具。 PHPJava Bridge php调用java Java批量作业执行框架 MyBatchFramework MyBatchFramework 是一个开源的轻量级的用以创建可靠的易管理的批量作业的Java包,主要特点是多线程、调度、JMX管理和批量执行报表,执行历史等。 SIP协议包 jSIP.tar jSIP这个Java包目标是用Java实现SIP(SIP:Session Initiation Protocol)协议及SIP协议的其它扩展部 分。 Java表达式语法解析库 parboiled parboiled 是一个纯Java库提供了一种轻量级,易于使用,功能强大和优雅的PEG(解析表达式语法)分析设施。你定义的Java源代码的语法规则,直接,没有必要专门编写和维护,外部语法文件。同时保持蒸提供全面的支持,无缝集成的IDE(语法着色,代码导航,重构等)的语法和操作代码完全分离。最大限度地减少时间和费用开发自定义的DSL(领域特定语言在Java)要求。 日志服务器 Apache Flume.tar Flume 是一个分布式、可靠和高可用的服务,用于收集、聚合以及移动大量日志数据,使用一个简单灵活的架构,就流数据模。这是一个可靠、容错的服务。 彩信发送开发包 apimms apimms 提供了各种语言用来发送彩信(MMS)的开发包,支持附件发送。 Oracle数据库工具 WARTS WARTS是一个纯Java数据库工具,可以执行字符编码识别的数据同步。开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,它功能强大,性能良好,秒杀当前流行的模板引擎。而且还易学易用。 Java的COM桥 JCom JCom (Java-COM Bridge) 可以让 Java 程序轻松访问 Windows 平台上的 COM 组件。 JARP JARP是为petri 网提供的一个Java编辑器,基于ARP分析器。可以将网络图导出为 GIF, JPEG, PNG, PPM, ARP and PNML (XML based)文件格式。使用了优秀的JHotDraw 5.2 框架。 activemq(JMS消息服务器 ActiveMQ) ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。 Ajax框架 ZK.rar ZK是一个Ajax Java Web框架,利用少量代码就能够开发出拥有Rich UI的Web应用。ZK提供基于XUL的标记语言和事件驱动的组件,可以让你像开发桌面应用程序一样简单。支持EL表达式和脚本语言包括:JavaScript、Ruby和Groovy等。支持Annotation及数据绑定。集成Google Maps、FCKeditor、DOJO以及Timeline。 Atom协议实现 Abdera.rar Apache Abdera是Atom联合协议(Atom Syndication)和Atom发布(Atom Publication)协议的开源实现,目前尚处于“孵化”阶段。最近,Abdera到达了0.40里程碑版,朝着成功孵化迈出了重要一步。 CKEditor for Java.rar 在线网页编辑插件(用浏览器编辑后所见即所得),支持多种平台下的脚本(asp aspx php cfm Dhtml htc),还集成了上传图片组件,含简、繁中文 cloudxy(弹性云计算平台 Cloudxy).rar Cloudxy 立足于实现虚拟子网(以太网)的弹性云计算平台 该项目主要包含有两个子项目: HLFS - 虚拟机分布式镜像存储 (似于亚马逊EBS,首先发布出来) ECM - 虚拟环境管理系统 (后续发布) Compass UI 工具 Compass.app.rar Compass.app 是一个针对 Sass 和 Compass 的菜单工具,帮助设计师通过 UI 的方式编译样式,而不用去记住命令行。它是用 JRuby 开发的,可以在多个平台上使用,而不用安装 Ruby 环境。 dnsjava(Java的DNS开发包 dnsjava).rar dnsjava是DNS协议的一个Java开源实现。 DNS服务器 Eagle DNS.zip Eagle DNS 是一个用 Java 语言开发的功能强大的多线程的平台无关的DNS服务器,基于 dnsjava 库,支持 Primary Zones 和 Secondary Zones。 EclipseHTMLEditor.rar Eclipse HTML编辑器插件 Eclipse的语法着色插件 Colorer Take.rar Colorer Take 能为在Eclipse中打开的各种源代码文件按语法着色。支持150多种语言。 ehcache(Java缓存框架 EhCache).rar EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 Facebook API 的 Java 封装请求处理组件 RestFB.zip facebook的restAPI和graphAPI封装,供java调用。 Facebook个人资料导出工具 fbpwn.zip fbpwn(Facebook个人资料导出工具).rar Google API for Java.zip grimwepa(无线密码破解工具).rar 一个密码破解WEP和WPA加密的接入点(路由器) gtd-free(个人待办事项管理软件 GTD-Free).rar GUI界面引擎 SwiXml.zip Hibernate搜索框架 Hibernate Search.zip HTML5模板引擎 Thymeleaf.zip HTML文档解析器 HTMLParser.rar HTML解析器 jsoup.rar iqq(开源 QQ 工具 iQQ).rar jacob-liang-platform-uus(系统平台统一用户 ).rar jalarm(个人提醒工具 jAlarm).rar Java 3D图形引擎 Catcake.zip Java HTTP服务器 TJWS.zip Java 插件框架 jspf.zip Java 缓存系统 JBossCache.zip Java 计算机视觉库 BoofCV.zip Java-COM中间件 JACOB.zip Javascript 扩展工具包 j-et.rar Java串口开发包 RXTX.zip Java五线谱处理库 abc4j.zip Java任务调度 jconch.rar Java加密包 Jasypt.zip Jasypt这个Java包为开发人员提供一种简单的方式来为项目增加加密功能,包括:密码Digest认证,文本和对象加密,集成hibernate,Spring Security(Acegi)来增强密码管理。 Java加密库 JSDSI.rar Java单点登录系统 JA-SIG CAS.rar Java即时战略游戏 StarCraft Ⅰ.rar Java和DLL(COM)互操作 Jawin.zip Java图像处理库 Java Image Filters.zip Java图形组件 JGraph.rar Java图形验证码 SimpleCaptcha.rar 一套用于生成各种图形验证码的库(Java) Java图表 JFreeChart.zip Java多播通讯框架 JGroups.zip JGroups是一个可靠的群组通讯Java工具包。它基于IP组播(IP multicast),但在可靠性,组成员管理上对它作了扩展。 JAVA字节码操作库 BCEL.zip Java实现的EverBox库 Everbox4j.zip Java实现的Web服务安全规范 WSS4J.zip Java对象验证框架 OVal.zip Java常用工具包 Jodd.zip Java应用服务器 Tomcat.zip Java应用框架 Nutz.rar Java开发的SHELL CRaSH.gz Java推箱子游戏 JSoko.rar Java搜索引擎 Lucene.zip Java时间工具包 JTimepiece.zip Java本地代码绑定工具 jSegue.zip Java本地调用接口 JNative.zip Java条形码生成库 Barcode4J.zip Barcode4J由Java语言编写而成,可以灵活的生成条形码。它采用Apache License V2.0许可,这使得它很容易在商业中被使用。它可以让您生成各种流行的一维和二维条码,包括DataMatrix 和 PDF417。以各种格式输出,包括SVG, EPS, bitmaps和Java2D,同样也可根据您的需要添加自己的输出格式。它为各种应用提供了插件,包括最重要的Apache FOP(格式对象处理器)。有一些用户将Barcode4J部署为一个servlet。 Java桌面搜索 JDesktopSearch.zip JDesktopSearch是一个基于Apache Lucene实现的桌面搜索引擎。它能够索引HTML、XML、OpenOffice、MS Word和PDF文档。其它的文件只索引文件名。 Java桌面程序开发框架 Viewa.zip Java模板引擎 FreeMarker.tar.gz Java源代码检索系统 JCite.zip Java的EPUB库 Epublib.zip Java的HL7解析器 HAPI.zip Java的OpenID服务器 JOIDS.rar Java的UIMA注解 uimaFIT.zip Java的UI皮肤 Quaqua.zip Java神经网络框架 Encog for Java.zip Java程序监控API Java Simon.zip Java算术表达式计算库 ExpressionJ.zip Java线程错误捕获工具 CheckThread.zip Java网页浏览器 Lobo.zip Java网页爬虫 JSpider.zip Java视觉处理库 JavaCV.rar Java论坛系统 JForum.zip Java调用本地库 JNAerator.zip Java远程终端工具 JTA.rar Java邮件服务器 James.rar Java邮件检验库 JEmval.zip Java验证码生成库 JCaptcha.rar JAXP数据验证引擎 Serene.zip JBoss事务处理 JBossTS.zip JDBC连接池、监控组件 Druid.zip JFCSwing用户图形界面 SwingML.rar JNI代码生成器 JNIGen.zip JSCSS压缩工具 YUI Compressor.zip JSON查询语言 Jaql.rar JSON库 Flexjson.zip JSP标签 Noka Tag.rar JS和CSS压缩混淆 JsCompressor.rar js文件压缩工具 Closure Compiler.rar jviolajones(人脸检测算法).rar lobby(经典board游戏 Domination).rar makagiga(开源个人桌面软件 Makagiga).rar MathML渲染器 JEuclid.rar OData的Java实现 odata4j.rar P2P应用程序协议框架 Java BEEP Core.zip paoding(中文分词库 Paoding).rar PDF 文档字体处理 FontBox.zip QQ农场外挂JAVA版本 qqhack.rar QQ登录的Java接口 open-qq.zip ralasafe(访问控制(权限管理)中间件 ).rar RPG游戏引擎 Arianne.zip SAT算法库 OpenSAT.zip sigar_mirror(系统信息收集API_Sigar).rar SNMP的MIB浏览器 JMIBBrowser.zip SQL解析库 SQLJEP.zip SSH服务端 Apache SSHD.rar swiftp(Android上的FTP服务器 SwiFTP).rar swing-explorer(Swing开发辅助工具).rar Swing开发框架 Griffon.zip tbschedule(淘宝任务调度分配器).rar Tomcat的管理和监控 PSI Probe.zip WebDAV网关 Davenport.rar WebSocket通讯框架 jWebSocket.rar Web代理服务器 RabbIT.tar.gz Web服务框架 Apache Axis.rar Web相册平台 Apache PhotArk.rar Web集成开发环境 Cloud9 IDE.zip WordNet的Java包 JWordNet.zip XML解析器 Xerces.rar Yahoo的分布式流计算平台 S4.rar YAML解析器 SnakeYAML.zip zaproxy(Web渗透测试 Zed Attack Proxy).rar zxing(条形码处理库).rar 业务流程管理(BPM)和工作流系统 Activiti.zip 个人博客软件 PersonalBlog.zip 个人知识库 Piggydb.zip 中国移动短信协议CMPP封装 hicmpp.zip 中文分词工具包 smallseg.jar 中文分词库 IKAnalyzer.zip 中文自然语言处理工具包 FudanNLP.zip 人工智能工具包 OpenAI.zip 企业信息系统开发平台 JBob.zip 使用Redis存放Session RedisManager.zip 入门级j2ee开源项目 simplejee.zip 全文搜索服务器 Solr.tgz 分布式缓存框架 SwarmCache.zip 加密库 BeeCrypt.zip 即时消息传输平台 Openfire.rar 国产Ajax框架 Buffalo.rar 国产纯Java多核体系结构模拟器 Archimulator.zip 在Java中运行Perl脚本 JERL.zip 坦克机器人战斗仿真引擎 Robocode.zip 多播事件总线 Avis.zip 多环境应用程序框架 WebOnSwing.rar 多用户在线游戏服务器端框架 Marauroa.tar.gz 大文件上传的Java Applet mupload.rar 天乙社区.rar 密钥管理工具 Keytool-IUI.zip 富客户端开发框架 Spring Richclient.tar.gz 开放实时数据处理平台 Twitter Storm.zip 开源JSF组件库 JQuery4JSF.rar 开源LDAP浏览器 JXplorer.zip 开源事务管理器 JOTM.zip 开源工作流系统 JWFD.rar 开源搜索系统 Red-Piranha.zip 开源日志管理 Logstash.jar 开源机器人技术中间件 OpenRTM-aist.zip 开源的Swing组件 JIDE.zip 开源足球游戏 Slam Soccer.rar 异步IO框架 Cindy.rar 懒惰者代码生成器 IdlerCodeGenerator.zip 拼写检查器 Hunspell.gz 指纹识别开发包 SourceAFIS.zip 数字图书制作工具 EpubCheck.rar 数据库连接池 C3P0.src.zip 数据持久层框架 Hibernate.zip 文件上传控件 GWTUpload.rar 文件压缩解压缩包 Commons Compress.rar 文件系统API EntityFS.zip 文字识别工具 Eye.zip 文本加密解密工具 ImmediateCrypt.zip 无线消息交换服务 HomerMX.zip 日历同步统计 GCALDaemon.zip 日历控件 Click Calendar.rar 最快速的java代码生成器 rapid-generator.zip 服务框架 Dubbo.rar 服务端JavaScript框架 RingoJS.rar 桌面博客工具 Thingamablog.zip 桌面图形计算器 GraphingCalculator.jar 桌面软件开发框架 joyWindow.zip 游戏引擎 JBox2D.zip 源问答系统 OpenEphyra.zip 漏洞检测程序 Yasca.zip 用户界面框架 XUI.rar 短信收发包 SMSLib.zip 磁盘的KV存储 JDBM2.rar 程序代码编辑器 jEdit.tar.bz2 第三代的P2P网络 ANts 简约的微博同步程序.zip 编程脚本引擎 Fantom.zip 网络应用框架 Netty.tar.bz2 网络抓包工具 jpcap.zip 网络数据包捕获函数库 jNetPcap.zip 网页抽取工具 Krabber.rar 联系人导出 ContactList.zip 表达式解释引擎 JSEL.rar 语音合成系统 FreeTTS.rar 调用远程API规范 XINS.zip 豆瓣OAuth认证示例项目.rar 跨平台的文件同步工具 Capivara.rar 远程文件传输工具 MammothCopy.tar.gz 通用数据底层 Jsa4j.zip 遗传算法包 JGAP.zip 重复数据删除 Duke.zip 面向对象的JavaScript框架 Dojo.rar 面向对象的脚本语言 ObjectScript.tar.gz 高性能Java网络框架 MINA.zip 高性能web代理程序 hyk-proxy.rar 高性能的Java 3D引擎 Xith3D.zip

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧