strlen(n)是求C风格字符串n的长度,+1的空间是为NUL终结符准备的,因为name是一个char*指针,以C风格字符串方式存储字符串。
为什么是name = new char[]?而不是name = n?
因为前者会拷贝原字符串的所有内容,而且有自己的存储空间;后者只是让指针name等于指针n,两个指针指向的是同一个存储空间,这是不安全的,因为外部存储字符串的空间,并不是Person类自有的,当外部存储空间释放后,再访问name指向的存储空间,就会出现未定义行为。
给姓名创建一个字符数组,长度为你输入字符长度+1.用来存储姓名的
在构造函数里面对name进行赋值,由于name是指针,所以我必须把传入的字符数组(或字符串)用字符串存储,new char[strlen(n)+1],就是创建一个字符数组用于存储传入的字符串,strlen(n),计算传入字符串长度,但是不包含字符串结束标志,所以要存储整个字符串必须在函数求值的基础上再加1