构造函数初始化列表中成员变量初始化顺序取决于声明顺序而不是初始化列表顺序
* 做题之前,考虑清楚输入是否合法,字符串是否为空,边界检查是否越界,考虑特殊输入测试,三种抛出异常的方法以及各自的优缺点:
* 功能测试(整数、负数、0)
* 边界测试(最大正数,最小负数)
* 特殊输入测试(输入字符串是否为空、非数字、null)
`
enum ststus{valid=0,invalid};
int g_statu=valid;
int atoi(char* str)
{
g_statu=invalid;
long long num=0;
if(str!=nullptr&&*str!=’\0’
{
bool minus=false;
if(*str==’+’)
str++;
else if(*str==’-‘)
{
minus=true;
str++;
}
if(str!=’\0’)
{
num=strtoint(str,minus);
}
return (int) num;
}
long long strtoint(char *str,bool minus)
{
long long num=0;
while(*str!=’\0’)
{
if(*str>=’0’&& *str<=’9’)
{
int flag=minus?-1:1;
num=num* 10+(*str-‘0’);
minus&&num>0x80000000)
{
num=0;
break;
}
str++;
else
{
num=0;
break;
]
}
if(*str=’\0’)
gstatus=invalid;
return num;
}
树种两个节点的最低公共祖先
思路:如果是BST,