c ++ const char*to char*

use*_*248 2 c++ pointers casting constants nullptr

我有以下函数,它最初对函数参数执行一些验证.

char *doSomething(const char* first, const char* second) {

    if((first == nullptr || *first == '\0') && (second == nullptr || *second == '\0')) {
        return nullptr;
    } else if (first == nullptr || *first == '\0') {
        return (char *) second;
    } else if (second == nullptr || *second == '\0') {
        return (char *) first;
    }
    //doSomething
}
Run Code Online (Sandbox Code Playgroud)

强制转换函数参数是否返回一个char*指向内存中不同区域的新参数?我不想允许使用此函数的人操纵常量参数指向的值.我希望char*返回一个new ,其值与其中一个参数相同(如果是nullptr或者为空).

跟进:布尔变量会更好吗?我意识到我正在对每个变量执行两次相同的检查,但我不会在此函数的代码中的任何其他位置使用此布尔值.

Pau*_*ans 5

不,它不会使任何新对象简单地转移const到您声明为不可变的内存区域.这通常会导致可怕的未定义行为,但如果它们来自非const指针,你就可以了(编辑 - 感谢@anatolyg).