printf(" display name : %s %c\n",m_strName.c_str(),pchChar);
должно быть:
printf(" display name : %s %c\n",m_strName.c_str(),*pchChar);
Первый из них приведёт указатель в символ и, следовательно, будет полностью зависеть от , где этот символ находится в вашем адресном пространстве.
Второй будет правильно разыменовывать указатель для получения символа, точно так же, как вы это сделали в init
коде вашего производного класса.
И этот маленький фрагмент:
pchChar = (char*)malloc(sizeof(char));
не не выделяет достаточно места для строки "A"
, для этого вам нужно два символа:
pchChar = (char*)malloc(2); // sizeof(char) is ALWAYS 1 !!!
Или еще лучше, не используйте malloc
вообще. Хотя C ++ предоставляет эти возможности для совместимости с C, вам, вероятно, лучше использовать new
и delete
.