std::vector и конструктор по умолчанию
От: Аноним  
Дата: 28.07.05 08:28
Оценка:
Что это означает?

class A 
{
public:
    A(){cout << "ctr" << endl;}
    ~A(){cout << "destr" << endl;}
};

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<A> av(5);
    cout << "-------" << endl;
    return 0;
}


ctr
destr
-------
destr
destr
destr
destr
destr
Press any key to continue
Re: std::vector и конструктор по умолчанию
От: jazzer Россия Skype: enerjazzer
Дата: 28.07.05 08:34
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что это означает?


А>
А>class A 
А>{
А>public:
А>    A(){cout << "ctr" << endl;}
А>    A(const A&){cout << "copy ctr" << endl;}
А>    ~A(){cout << "destr" << endl;}
А>};

А>int _tmain(int argc, _TCHAR* argv[])
А>{
А>    std::vector<A> av(5);
А>    cout << "-------" << endl;
А>    return 0;
А>}
А>


добавь такую строчку
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: std::vector и конструктор по умолчанию
От: Bell Россия  
Дата: 28.07.05 08:37
Оценка:
Здравствуйте, Аноним, Вы писали:


Это означает, что ты используешь вот этот конструктор вектора:
23.2.4.1
explicit vector(size_type n, const T& value = T(),const Allocator& = Allocator());


т.е. сначала создается 1 временный объект с использванием конструктора по умолчанию, а затем этот временный объект используется для конструирования элементов вектора с использованием конструктора копирования.
Любите книгу — источник знаний (с) М.Горький
Re: std::vector и конструктор по умолчанию
От: SnowMan  
Дата: 28.07.05 08:38
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что это означает?


А>
А>class A 
А>{
А>public:
А>    A(){cout << "ctr" << endl;}
А>    ~A(){cout << "destr" << endl;}
А>};

А>int _tmain(int argc, _TCHAR* argv[])
А>{
А>    std::vector<A> av(5);
А>    cout << "-------" << endl;
А>    return 0;
А>}
А>


А>ctr

А>destr
А>-------
А>destr
А>destr
А>destr
А>destr
А>destr
А>Press any key to continue

Какой компилятор? У меня просто:
-------
Press any key to continue
Re: std::vector и конструктор по умолчанию
От: gbt Россия  
Дата: 28.07.05 08:39
Оценка:
Hello, , you wrote:

Сигнатрура конструктора вектора выглядит так:
vector::vector(size_t size, T const & initValue = T());


То есть сначала вызовом конструктора по умолчанию создается объект, которым с
помощью конструктора копирования инициализируются все элементы вектора, потом
этот объект удаляется.

#include <iostream>
#include <vector>

using namespace std;

class A 
{
public:
        A(){cout << "ctr" << endl;}
        A(A const &){cout << "copyctr" << endl;}
        ~A(){cout << "destr" << endl;}
};

int main(int argc, char* argv[])
{
        vector<A> av(5);
        cout << "-------" << endl;
        return 0;
}


ctr
copyctr
copyctr
copyctr
copyctr
copyctr
destr
-------
destr
destr
destr
destr
destr
Press any key to continue


--
Igor Polyakov — igorpol_gbt (at) mail (dot) ru
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.