I'm learning c++ and came across this const_cast operator. Consider the following example:
class Test
{
private:
char name[100];
public:
Test(const char* n) { std::strncpy(name, n, 99); name[99]=0; }
const char* getName() const { return name; }
}
Now a user can do
Test t("hi");
const_cast<char*>(t.getName())[0] = 'z'; //modifies private data...
Is this fine ? I mean modifying private data since the purpose of return const char* was to prevent changing private data. How do I prevent this ? (without using std::string)