I'm new to C++ and try to understand how to create and use a class in C++. For this I have the following code:
class MyClass
{ 
    public:
    MyClass()
    {
        _num = 0;
        _name = "";
    }
    MyClass(MyClass* pMyClass)
    {
        _num = pMyClass->_num;
        _name = pMyClass->_name;
    }
    void PrintValues() { std::cout << _name << ":" << _num << std::endl; }
    void SetValues(int number, std::string name)
    {
        _num = number;
        _name = name;
    }
    private:
    int _num;
    std::string _name;
};
int main()
{
    std::vector<MyClass*> myClassArray;
    MyClass myLocalObject = new MyClass();
    for (int i = 0; i < 3; i++)
    {
        myLocalObject.SetValues(i, "test");
        myClassArray.push_back(new MyClass(myLocalObject));
    }
    myClassArray[1]->PrintValues();
    // use myClassArray further   
}
I get a similar example from the internet and try to understand it. My intentions is to populate myClassArray with new class objects. If I compile the code above using VisualStudio 2022 I get no errors, but I'm not sure it doesn't produce memory leaks or if there is a faster and simple approach.
Especially I do not understand the following line: MyClass myLocalObject = new MyClass();
myLocalObject is created on the stack but is initialized with a heap value (because of the new). If new operator is used where should delete must apply?
Thank you for any suggestions!
 
     
     
    