1、在函数体的“入口处” ,用断言对参数的有效性进行检查。断言 assert 是仅在 Debug 版本起作用的宏,它用于检查“不应该”发生的情况。
void *memcpy(void *pvTo, const void *pvFrom, size_t size)
{
assert((pvTo != NULL) && (pvFrom != NULL)); // 使用断言
byte *pbTo = (byte *) pvTo; // 防止改变 pvTo 的地址
byte *pbFrom = (byte *) pvFrom; // 防止改变 pvFrom 的地址
while(size -- > 0 )
*pbTo ++ = *pbFrom ++ ;
return pvTo;
}
如果程序在 assert 处终止了,并不是说含有该 assert 的函数有错误,而是调用者出了差错,assert 可以帮助我们找到发生错误的原因。
2、在函数体的“出口处” ,对 return 语句要注意以下几点:
(1)return 语句不可返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体结束时被自动销毁。例如
char * Func(void)
{
char str[] = “hello world”; // str 的内存位于栈上
…
return str; // 将导致错误
}
(2 )如果函数返回值是一个对象,要考虑return 语句的效率。例如
return String(s1 + s2)
比
String temp(s1 + s2);
return temp;
还高效,因为前者是创建一个临时对象并返回它,而后者创建临时对象temp时,同时完成初始化;然后拷贝构造函数把 temp 拷贝到保存返回值的外部存储单元中;最后,temp 在函数结束时被销毁(调用析构函数)
3、引用与指针
这是比较重要的一块。
引用的一些规则如下:
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化) 。
(2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是 NULL) 。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象) 。
以下示例程序中,k 被初始化为 i 的引用。语句 k = j 并不能将 k 修改成为 j 的引用,
只是把 k 的值改变成为 6。由于 k 是 i 的引用,所以 i 的值也变成了 6。
int i = 5;
int j = 6;
int &k = i;
k = j; // k 和 i 的值都变成了 6;
上面的程序看起来象在玩文字游戏,没有体现出引用的价值。引用的主要功能是传递函数的参数和返回值。
4、值传递、指针传递和引用传递。
C++语言中,函数的参数和返回值的传递方式有三种:值传递、指针传递和引用传递。
// 值传递
void Func1(int x)
{
x = x + 10;
}
…
int n = 0;
Func1(n);
cout << “n = ” << n << endl; // n = 0
// 指针传递
void Func2(int *x)
{
(* x) = (* x) + 10;
}
…
int n = 0;
Func2(&n);
cout << “n = ” << n << endl; // n = 10
// 引用传递
void Func3(int &x)
{
x = x + 10;
}
…
int n = 0;
Func3(n);
cout << “n = ” << n << endl; // n = 10
分享到:
相关推荐
### 高质量C++编程指南知识点总结 #### 1. 布尔变量的比较 在C++中,不应该直接将布尔变量与`TRUE`, `FALSE`或`1`, `0`进行比较。...以上总结了《高质量C++编程指南》中提到的关键知识点,希望对您的学习有所帮助。
C++是一种广泛使用的编程语言,尤其在系统软件、应用程序、游戏开发、设备驱动等领域...《C++ Primer》提供的学习笔记是初学者和进阶者都非常宝贵的资源,结合实际的编译器操作和错误调试,能够帮助你逐步精通C++编程。
以上知识点只是冰山一角,深入学习"高质量C/C++编程指南",结合作者的笔记和总结,将有助于你在C/C++编程领域达到更高的水平。记住,实践是最好的老师,不断编码、反思和改进是成为优秀程序员的必经之路。
《高质量程序设计指南:C、C++语言(第3版)》不仅仅是一本技术书籍,更像是一位经验丰富的导师,引领着读者进入C/C++编程的世界。通过系统学习本书中的理论知识与实战技巧,读者能够显著提升个人编程技能,在职业...
《高质量C++/C编程指南》是一本专门针对C++和C编程的指南,它涵盖了编程的最佳实践、陷阱和技巧,以帮助程序员编写出高效、可维护的代码。这本书可能包括了模板元编程、异常处理、STL(标准模板库)的使用、内存管理...
高质量C++编程学习笔记.doc
《高质量程序设计指南:C++/C 语言(第三版)》是一本深入探讨软件开发质量和C++/C 编程规范的书籍...通过深入阅读和实践,读者将能够掌握编写高质量C++/C程序的技巧,并理解如何在实际开发中实施有效的软件工程方法。
《Visual C++/MFC学习笔记》是一份深入探讨C++和Microsoft Foundation Class (MFC)库的文档,旨在帮助读者掌握使用Visual C++开发Windows应用程序的技能。这份笔记主要分为六个章节,覆盖了从入门到高级的多个主题。...
《高质量C++编程指南》是一本深受欢迎的C++学习资料,特别适合初学者作为入门教程。这本书结合了丰富的编程经验和实例,旨在帮助读者掌握C++编程的核心概念、语法和最佳实践。通过阅读这本书和相应的笔记,学习者...
通过学习,你可以提升自己的QT编程能力,开发出高质量、跨平台的应用程序。同时,提供的"QT高级编程视频教程-最强初级到高级编程开发丁林松--QT高级编程视频教程-最强初级到高级编程开发.txt"文本文件,很可能是课程...
### C++ 提高编程学习笔记:泛型编程与 STL 技术详解 #### 一、泛型编程概述 泛型编程是一种编程范式,通过在程序设计中使用参数化的类型来编写代码,使得同一段代码可以处理多种不同的数据类型。这种编程方式极大...
《高质量C++编程指南》是一本深受欢迎的C++学习资料,其中包含了丰富的编程实践经验和最佳实践。这本书的笔记部分尤为珍贵,它不仅涵盖了基础的语法和概念,还深入探讨了C++的高级特性和设计模式,对于提升编程技能...
《C/C++编程思想》是一本面向初学者的宝贵资源,涵盖了C++语言的基础到高级概念,旨在帮助读者深入理解编程原理并掌握C++的核心特性。这个压缩包包含的PDF文件很可能包含了各种教程、笔记或者讲解,对于那些对C++...
这份"(强烈推荐大家看一看)高质量C++编程指南(有笔记)1"提供了丰富的资源,旨在帮助学习者提升C++编程技能,特别是在理解和应用方面。下面将详细讨论这份指南中可能涵盖的关键知识点。 1. **基础语法与数据类型**...
在深入探讨C++编程语言的学习经验之前,首先要理解C++是一种多范式、面向对象的编程语言,由Bjarne Stroustrup于1983年在C语言的基础上发展而来。它提供了丰富的特性,包括类、模板、异常处理、命名空间、函数重载等...
《新手C++学习笔记》是一份专为编程初学者打造的资源,旨在帮助那些刚刚踏入C++编程领域的“菜鸟”快速成长。这份笔记包含了前辈们的实践经验总结,具有很高的学习价值。文档以.doc格式存储,方便读者使用常见的文字...
从给定的文件信息来看,标题与内容存在明显的不匹配,标题提到的是“高质量C++编程指南”,然而内容却是关于法语学习的笔记。这里,我们将重点放在标题和描述所暗示的知识点上,即C++编程的相关知识。 ### 高质量...
根据给定的文件信息,以下是对《C++编程思想》阅读笔记中提到的关键知识...以上就是从《C++编程思想》阅读笔记中提炼出的关键知识点,它们涵盖了从基础语法到高级编程概念的广泛内容,对于学习和理解C++语言至关重要。