前几天发了篇帖子《Symbian中窥探C++编程功底》,没想到骂声一片!
这让我想起来一个很古老的故事:
话说一艘船出了问题,无法起锚。于是船长请来有经验的老船匠,老船匠敲了几下搞定了。当船长问他要多少钱时,他要200美金!于是船长很不高兴,就问他只是敲了几下,哪里值200美金了?至于船匠的回答,我想大多数人都知道了!
当问题被明显的指出来的时候,大家都觉得很easy!而如何找出来这个问题,我相信是完全靠经验的。
所以,尽管我做了5年的程序员,尽管我在Symbian平台上的开发有将近3年的经验。很多时候,我还是抱着自己是菜鸟的心态去请教别人每一个问题。然后在这里做做记录,以备后用!如果这些记录能帮助了你,那么我很高兴。
《C++箴言》中写得很清楚:
⒈请记住一个引用仅仅是一个名字,一个实际存在的对象的名字。无论何时只要你看到一个引用的声明,你应该立刻问自己它是什么东西的另一个名字,因为它必定是某物的另一个名字。
⒉一个函数创建一个新对象仅有两种方法:在栈上或者在堆上。栈上的生成物通过定义一个局部变量而生成。
所以,在上一篇文章中我也只是为了说明问题的比照性,用new在堆上分配了资源。当然,这肯定不是最优的解决方法。因为它无法解决new出来的资源的释放问题!
至于有个兄台说是std::string没问题,是因为copy constructor的问题。我不敢苟同,请看下面的测试method:
string& testString() { string ret; char* str = "helloworld"; ret.assign(str,strlen(str)); return ret; } |
这个方法在VS2003下会报告warning:返回局部变量或临时变量的地址
正在链接...
至于copy constructor,我想它的出现是为了三个方面的原因:
⒈对象做为参数传递
⒉对象做为函数返回值
⒊对象赋值
所以以上的代码中并不存在copy constructor的问题。
C++中每一个技术点的出现都是为了解决语言本身的特性,就像虚函数的出现是为了多态的实现一样。
当然很多前辈的经验还是很好的,比如从参数传递、返回指针以释放资源ect。
技术的追求是没有止境的,
所谓路漫漫其修远兮,
与大家共勉!
分享到:
相关推荐
SYMBIAN OS C++ 高效编程教程
《Symbian OS C++ 高效编程》与《Symbian OS Explained》是两本专注于Symbian操作系统开发的书籍,它们为开发者提供了深入理解Symbian OS架构、API以及C++高效编程技巧的重要资源。源码的提供使得读者能够通过实际...
《Symbian OS C++高效编程的源码》是一份珍贵的资源,它涵盖了Symbian OS平台上C++编程的核心技术和实践经验。Symbian OS曾是智能手机操作系统中的领军者,尤其在诺基亚手机中广泛使用,对于了解移动设备开发历史和...
《Symbian OS C++编程诀窍》是一本专注于Symbian操作系统开发的书籍,它深入探讨了在Symbian平台上使用C++进行系统级编程的技术和策略。这本书的随书源码包含了作者为了阐述各种编程技巧和概念而编写的示例代码,是...
《Symbian OS C++ 编程诀窍》是一本专为Symbian操作系统开发者编写的实战指南,书中深入探讨了在Symbian平台上进行C++编程的各种技巧和最佳实践。随书附带的源代码提供了丰富的实例,帮助读者更好地理解和应用书中所...
本篇文章将深入探讨汇编及C++混合编程在Symbian程序开发中的应用和关键知识点。 首先,了解Symbian操作系统是必要的。Symbian是一个实时、分时多任务的操作系统,特别适合资源有限的移动设备。它的API主要是C++构建...
《Symbian OS C++编程诀窍源代码》是一份重要的配套教学资源包,专为学习Symbian OS操作系统上的C++编程者提供。Symbian OS曾是智能手机领域广泛使用的操作系统,尤其在诺基亚手机中占据主导地位。这份资源包含了一...
Symbian OS C++ 编程诀窍.chm 章节【3.1----6.3】 图书版权归出版社和作者所有,CSDN & DearBook独家提供试读和连载 仅作学习用,禁止用于商业用途,保护作者合法权益
《SYMBIAN OS C++ 高效编程》是针对Symbian操作系统进行深入探讨的一份珍贵资源,主要针对使用C++进行系统级和应用级开发的程序员。Symbian操作系统曾是智能手机领域的主流平台,尤其在功能手机时代,其市场份额显著...
以上只是Symbian C++编程中的一小部分核心知识点,实际开发过程中还需要深入了解系统架构、API用法以及各种平台特性。阅读提供的"Symbian C++编程注意规则" PDF文件,将能更深入地了解这些规则和最佳实践。
在Symbian C++手机编程中,字符串处理与标准C/C++有所不同,主要是因为Symbian OS使用了一种称为描述符(Descriptors)的机制来安全高效地管理字符串和二进制数据。描述符是一种内建的数据结构,它可以是常量或可变...
直接使用标准C++中的`new`运算符而不是Symbian特定的`new(ELeave)`可能会导致资源泄漏,因为后者能够在分配失败时抛出异常。 **2.5.3 错误使用了后缀‘L’** 在Symbian OS中,后缀‘L’表示一个对象是在堆上分配的...
本文将深入探讨在S60平台上ANSI C++与Symbian C++之间的差异,帮助开发者理解这两种编程语言在实际应用中的优缺点。 首先,ANSI C++(也称为ISO C++)是一种国际标准的C++版本,它定义了C++语言的语法、库和编译器...
SYMBIAN OS C++高效编程,中文版,分卷压缩,这是第三部分
SYMBIAN OS C++高效编程,中文版,分卷压缩,这是第二部分,
本课件作为塞班公司内部的培训材料,其价值在于提供了专业、系统的知识讲解,帮助开发者更好地掌握在Symbian平台上进行C++编程的技巧。 Symbian C++编程涉及的知识点包括但不限于以下内容: 1. **Symbian操作系统...
《Symbian OS C++ for Mobile Phones》是一套完整的教程,涵盖了Symbian操作系统下C++编程的方方面面,包括Volume1、Volume2和Volume3三部分。这套教程旨在帮助开发者深入理解和掌握在移动设备上使用Symbian OS进行...