You can do that in C++
You can write code, which accesses memory via pointers just like the old C does. This is called backward compatibility and happens to be the source of most C++ memory corruptions bugs. You can, but you don't have to. Actually, all the books tell you not to. Use strings and containers and you're good. It isn't that hard to figure out. container[passed_the_end] doesn't do a memory check, while container.at(passed_the_end) does. You just have to want to do it. ;-)