所在的位置: C++ >> C++优势 >> C核心指南I12用notn

C核心指南I12用notn

理由:

避免对空指针进行取值操作,导致错误。

无需对空指针进行多余检查,提升性能。

例如:

intlength(constchar*p);//不清楚length(nullptr)是否正确length(nullptr);//OK?intlength(not_nullconstchar*p);//更好:可以认为p非空intlength(constchar*p);//p可以是空指针

在代码中清晰表明代码的意图,可以让实现者和相关工具提供更明确的诊断信息。比如可以通过静态检测发现某些错误。还可以提升性能,比如减少判断指针指针是否为空的逻辑分支。

注意:

GSL定义了not_null

注意:

constchar*这种指向char的指针用来表示C风格的\0结束的字符串,不太直接,容易误解和出错。建议使用czstring。

//wecanassumethatpcannotbenullptr//wecanassumethatppointstoazero-terminatedarrayofcharactersintlength(not_nullzstringp);

注意:

这里length()只是举个例子,实际代码中应该用标准库里的std::strlen()

强化:

(简单,基础)如果函数会在各种分支中检查传入参数的指针是否为空指针。建议把参数声明为not_null。

(复杂)如果函数在各个返回路径都要确保返回的不是空指针,建议把返回类型声明为not_null

C++核心指南是由C++创始人BjarneStroustrup和ISO/ANSIC++标准委员会秘书HerbSutter领导开发的关于如何正确高效使用C++的在线文档。就像C++语言本身一样,这些指南是许多组织中许多人多年讨论和设计的结果。

kimim


转载请注明:http://www.aierlanlan.com/grrz/498.html