Dynamic memory allocation - how is it supported?

I am not sure, what I talk about. The concept of class is still somewhat blurry for me, but it helped a bit when you say, that String is a class. But the above video showed several member functions, that was not found in the arduino String class definitions. So I guess this confused me. This is some code for arduino:

String str;
String str2;
int n;
char ch;

void setup() {
Serial.begin(9600);
str = "ABC";
Serial.println(str);
n = str.length();       // length() is OK
Serial.println( n );    
str.clear();            // clear() is not part of the Arduino String class
if (str.empty()) {Serial.println("string is empty");}; //empty() is not part of the Arduino String class
str.append('D');        // append() is not part of the Arduino String class
Serial.println(str);
ch = str.at(2);         // at() is not part of the Arduino String class
str2 = str.substring(0,1);  // substring() is OK
str.insert(1,"X");      // insert() is not part of the Arduino String class
n = str.find('B');      // find() is not part of the Arduino String class
str.erase(0,1);         // erase() is not part of the Arduino String class
}

void loop() {
delay(1);
}

The YouTuber referenced this webpage with a lot of member functions to a string. Perhaps the names of these member functions are not that agreed upon among C++ compilers.

https://cplusplus.com/reference/string/string/