class example1
{
private:
int i;
public:
example1(){i = 1;}
int getI(){return i;}
};
class example2
{
public:
example2(){}
vector<example2> this_vector_wont_compile(3);
vector <example2> theVec;
void addVec()
{
//what's the scope of this?
//does push_back create a pointer
//to which a deep copy of the example1 instance
//returned by the constructor is performed?
theVec.push_back(example2());
}
};
int main()
{
example2 theExample;
theExample.theVec[0]; //can be accessed, instance of example1 in scope.
return 0;
}
Привет, я пытаюсь понять основные операции с памятью при использовании std :: vectors. Приведенный выше пример показывает, как я использовал их в прошлом, не спрашивая, как это было сделано.
Конструктор example2 () возвращает экземпляр, который выходит из области видимости после завершения функции addVec (), так как же VEC добавляет его, сохраняя при этом в объеме до тех пор, пока значение Vec равно?
а также, почему объявление std :: vector как имеющего постоянный размер в классе приводит к ошибке компилятора, и как ее можно избежать?