In C++ string literals "Hello" are const and are immutable. I wanted to make a custom string class whose strings are not const chars, so they can be changeable
Here is a snippet of code that might illustrate what I'm trying to do:
#include <iostream>
class String {
  public: 
    char * p_start;
    String(char * strSourc) // Constructor
      {
        p_start = strSourc;
      }
};
int main() 
{
  String myString("Hello");  
// Create object myString, send "Hello" string literal as argument
  std::cout << myString.p_start << std::endl; 
// Prints "Hello"
  *myString.p_start = 'Y'; 
// Attempt to change value at first byte of myString.p_start
  std::cout << myString.p_start << std::endl; 
// Prints "Hello" (no change)
  myString.p_start = "Yellow"; 
// Assigning a string literal to p_start pointer 
  std::cout << myString.p_start << std::endl; 
// Prints Yellow, change works.  I thought myString "Hello" was const chars, immutable
  return 0;
}
So, I'm confused. I've looked everywhere and it says that string literals, like "Hello", are immutable, each of their char bytes are unchangeable. Though I managed to assign Yellow to the p_start pointer, changing the first letter. Though changing the single letter H to a Y through dereferencing the H pointer didn't do anything.
Any insights would help me, thanks.
 
     
    