C ++ std :: vector奇怪的行为

我有这样的课

//Header file
class MyClass{
    public:
        MyClass(int value);
        void doSomething(MyClass2 element);
    private:
        std::vector<MyClass2> v1;
        int value;
}

//cpp file
MyClass::MyClass(int value):value(value), v1(std::vector<MyClass2>()){

}

void MyClass::doSomething(MyClass2 element){
    std::cout << "Size of v1 is " << this->v1.size() << std::endl;
    this->v1.push_back(element);
    std::cout << "Size of v1 is " << this->v1.size() << std::endl;
}

我用以下方法调用doSomething方法:

int main(){
    MyClass myClass(0);
    MyClass2 myClass2("name");

    myClass.doSomething(myClass2);

    return 0;
}

这段代码向我输出的第一个cout大小不一致(4237020018),并在push_back方法调用中崩溃。我知道这可能是一个简单的问题,但是我从c ++开始,我真的不明白这里发生了什么。

评论