class MyClass {
public:
void process(char * const data) {
// 处理data
}
void anotherFunction(const char * globalStr) {
char * tempStr = const_cast<char*>(globalStr);
process(tempStr);
}
};
设计思路
globalStr
是一个指向常量字符串的指针,类型为const char*
。
process
函数的参数类型为char * const
,意味着指针本身是常量,但指向的内容可以修改。
- 直接将
const char*
类型的globalStr
传递给process
函数会导致类型不匹配错误,因为process
函数期望的是一个非const
的char*
指针。
- 使用
const_cast
将const char*
转换为char*
,这样就可以将globalStr
传递给process
函数。需要注意的是,const_cast
只能用于去除const
属性,在使用时要确保原本指向的内容确实可以被修改,否则会导致未定义行为。这里虽然globalStr
指向全局字符串常量,但通过const_cast
转换后传递给process
函数,在process
函数中若修改该字符串内容,行为是未定义的,实际应用中应避免这种情况,此例仅为满足面试题目要求。