小弟我菜鸟在写一个小程序时碰到的几个小问题和感受,想和做个开放式的探讨

我初学者在写一个小程序时碰到的几个问题和感受,想和各位高手们做个开放式的探讨
我写的是个单文档,想实现在打印机上在想要的位置打印字体或图片:问题
1、我把从用户接受到的关于字体的信息保存在CList中,但编译时提示好像要重载“=”操作符,如果是CList<CMyObject,CMyobject>,即第二个参数为非引用的话,还要自定义拷贝构造,请问这是为什么呢?CObject不是有“=”
操作符吗?我可以只写个空函数吗?
2、文档序列化,有好一点的序列化结构体的例子吗?像序列化字体结构体lf就很麻烦。在这里想提醒一下别的初学者,序列化的读和写顺序要严格一致。
3、请高手指点一下,要写一个程序之前应该怎么做好各个类的规划,我觉得我写程序时很没头绪,结构也比较乱,在这方面下功夫应该应该看什么方面的书。
4、在下非计算机专业,大二时偶然接触了html,后来玩过一点asp,as,java,对编程有兴趣,但现在工作了苦于没太多时间钻研,请各位给点提高方面的建议。
请各位高手针对以上的问题选择回答(3、4有亲身经历最好)。小弟分数不多,尽可能地给分,忘高手们不吝赐教。


------解决方案--------------------
clist存放的数据类型必须是可复制的, 因为在clist插入一条,就要复制一条
------解决方案--------------------
1、因为CList内部的实现会通过"="复制出存储的数据,如果只写空函数,数据会出错。另外最好是保存指针,否则在插入、删除,甚至比较数据时会有拷贝构造、赋值函数等的开销。但保存指针时需要注意生存期和比较时可能会比较到地址的问题。
2、3 建议参考VC提供的例子, 路径好像是 AllVCLanguageSamples\MFC\ole\drawcli, 其中有序列化的例子,仔细分析其中的 drawobj、drawtool 两个文件,学习人家是怎么设计的。
至于4, 多读多看多练吧。
------解决方案--------------------
1: CList是派生自CObject类,如果CList A.往A里面添加类对象时,他会调用拷贝构造函数(这个无参数构造函数:不一样),如果派生类没有写拷贝构造函数时,他就会调用基类的拷贝构造函数,但这个函数是CObject私有的,所以会报错...
------解决方案--------------------
觉得乱其实是好事,说明你已经过了入门阶段,需要进阶了。
进阶一方面收集开发经验、项目实战经验,一方面看书、设计模式、所能接触的项目架构分析
还可以从细微处入手:代码优化、代码格式、算法。
最后切记:不论理论多么诱人,实战还是必须的,避免成为理论的仰慕者、践行的无缘者。
没有好的代码理论其实也可以推出成功的产品,不在于做的多好,而在于推出版本、释放、发布、生存。