Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Конструктор копирования и vector


Автор: Vovan222 6.12.2010, 23:39
Всем привет, вот код:
Код

#include "stdafx.h"

using namespace std;

template <class eltype>
class objtype
{
    public:
        objtype(const int& n=0) : a(n,0){}
        vector<eltype> a;
};

int _tmain(int argc, _TCHAR* argv[])
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    
    int i;
    double s;
    objtype<double> x(3), y(x);

    x.a[1] = 123;

    copy(x.a.begin(),x.a.end(),ostream_iterator<double>(cout," "));
    cout << endl;

    copy(y.a.begin(),y.a.end(),ostream_iterator<double>(cout," "));
    cout << endl;

    return 0;
}

Подскажите почему работает строчка:
Код

objtype<double> x(3), y(x);


Кто создал конструктор копирования 
Код

objtype<double>(objtype<double>&)
? 
вектор что-ли?

Автор: Crafty 7.12.2010, 00:20
Если конструктор копирования в классе не определен, то компилятор создаст его сам. Так называемый синтезируемый конструктор копирования, который осуществляет почленную инициализацию.

Автор: Vovan222 8.12.2010, 23:51
Crafty, т.е он делает что-то типа этого:
Код

objtype<double>(objtype<double>& obj) : a(obj.a)
{
}

?

Автор: Crafty 8.12.2010, 23:56
Vovan222, Именно так.

Автор: Vovan222 9.12.2010, 00:44
спасибо

Автор: azesmcar 9.12.2010, 07:40
Цитата(Vovan222 @  8.12.2010,  23:51 Найти цитируемый пост)
.е он делает что-то типа этого:

Именно "что-то типа". Вот тут смотри подробнее

http://forum.vingrad.ru/forum/topic-262056/anchor-entry1887548/0.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)