记得上学时,阅读过这本经典之作。当时没有实际项目经验,全是为了看书而看书,读完后,一本经典之作竟然一点触动都没有。
这次偶尔翻到此书,闲暇时间,再次拜读几个章节,影响极深,对C++以及面向对象又有了新的认识,打动了本来已经沉寂好久的求学欲望。回想这几年工作,全部精力都投入到了项目中。很多时候都处于赶进度的状态,为了快速得到结果,忽略了详细的斟酌过程。结果还是代码出来后修修改改,没有采用合理的模式和应该的设计思想。
以下是本人今天下午调试出来的第10章源代码,在VC++6.0中调试成功,本打算上传源代码,但是第一次写BLOG,不知怎么上传,暂时全拷贝上。
本章本书作者让我们充分认识到面向对象的伟大和其运用技巧,C++中的动态绑定被充分运用。仔细参与编程,可以充分认识到其实现细节,值得玩味。
main函数:
void main()
{
printf("hello world!/r/n");
/*
Expr t = Expr((string)"*",Expr((string)"-",(Expr)5),Expr((string)"+",(Expr)3,(Expr)4));
cout << t << endl;
//(-5)*(3+4)
cout<<t.eval()<<endl;
t = Expr((string)"*",t,t);
cout << t << endl;
//(-5)*(3+4)*(-5)*(3+4)
cout<<t.eval()<<endl;
*/
char *str[] ={"Hello", "World", "Thinks"};
char *warn[] = {"Yulong", "Conmunication", "Limited", "Corporation"};
// Picture p(str,3);
// cout<<p<<endl;
//
// Picture *q = frame(p);
// cout<<(*q)<<endl;
// delete q;
Picture_ad p(str,3);
Picture_ad q(warn,4);
cout<<p<<endl;
Picture_ad r = frame(p);
cout<<r<<endl;
Picture_ad s = frame(q);
cout<<s<<endl;
Picture_ad t = r | s;
cout<<t<<endl;
Picture_ad o = frame(t);
cout<<o<<endl;
Picture_ad m = o & r;
cout<<m<<endl;
Picture_ad n = frame(m);
cout<<n<<endl;
}
头文件:
/**********************************************
*C++沉思录 Chapter 10
*Creator:
*Date: 2008-10-30
*Description:
*1.利用句柄类隐藏细节
*2.类层次保存结构信息
*3.内存分配策略采用引用计数
*********************************************/
#include <iostream>
using std::ostream;