C++中怎么使用default

C++中怎么使用default

本篇内容介绍了“C++中怎么使用default”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

ES.79:使用default处理一般case

Reason(原因)

Code clarity. Improved opportunities for error detection.

代码清晰性。增加发现错误的机会。

Example(示例)

enum E { a, b, c , d };

void f1(E x)
{
   switch (x) {
   case a:
       do_something();
       break;
   case b:
       do_something_else();
       break;
   default:
       take_the_default_action();
       break;
   }
}

Here it is clear that there is a default action and that cases a and b are special.

可以清晰地看出存在一个默认case,而a和b是特殊case。

Example(示例)

如果就是没有默认动作,你只想处理特殊case时应该怎么做呢?这种情况下,保留一个空的默认处理,否则不可能知道你是否意图处理所有case。

void f2(E x)
{
   switch (x) {
   case a:
       do_something();
       break;
   case b:
       do_something_else();
       break;
   default:
       // do nothing for the rest of the cases
       break;
   }
}

如果漏掉了default,维护者或者编译器可能会合情合理的假设你意图处理所有case。

void f2(E x)
{
   switch (x) {
   case a:
       do_something();
       break;
   case b:
   case c:
       do_something_else();
       break;
   }
}

你是忘记了case d还是故意遗漏的?忘记一个case通常发生在增加枚举值之后却没有为所有switch语句增加针对该值的处理的时候。

Enforcement(实施建议)

标记针对枚举类型的、没有处理所有枚举值并且不包含default处理的switch语句。对于某些代码这种做法可能会产生太多的假阳性;如果发生这种情况,只标记处理了大部分case但不是全部case的情况(这正是很早期的C++编译器采用的策略)。

“C++中怎么使用default”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!