powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / copy constructor of base class
9 сообщений из 9, страница 1 из 1
copy constructor of base class
    #34341527
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте друзья,

Вопрос вазник такой.
Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B.
Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor?
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342079
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ParadoxxЗдравствуйте друзья,

Вопрос вазник такой.
Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B.
Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor?

Вообще то ето assignment operator. Copy constructor:
Код: plaintext
1.
B(const B&);

2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта.
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342150
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A. Fig Lee ParadoxxЗдравствуйте друзья,

Вопрос вазник такой.
Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B.
Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor?

Вообще то ето assignment operator. Copy constructor:
Код: plaintext
1.
B(const B&);

2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта.

когда вы пошите
B objB1 = objB; тo вызывается Copy constructor of class B,
assignment это когда оба обьекта уже init..
Ex:
objB1 = objB;
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342246
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paradoxx пишет:

> Но почемы когда (

B objB1 = objB;

) вызызается copy constructor класса B то
> copy constructor класса A не вызызается, а в место этого вызызается
> default constructor?

Не, вызывается дефолтная реализация конструктора копирования класса A.
Она ДОЛЖНА ВЫЗЫВАТЬСЯ в любом случае.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342298
поведение by design..
хотите иного - указывайте конструктор явно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>

class A
{
public:

	~A() { std::cout << "\n~A()"; }

	A() { std::cout << "\nA()"; }
	A( const A& a ) { std::cout << "\nA( const A& )"; }
};

class AA: public A
{
public:

	~AA() { std::cout << "\n~AA()"; }

	AA() { std::cout << "\nAA()"; }
	AA( const AA& aa ): A( aa ) { std::cout << "\nAA( const AA& )"; }
};

int main()
{
	AA aa1;
	AA aa2 = aa1;
	return  0 ;
}

...
Рейтинг: 0 / 0
copy constructor of base class
    #34342508
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paradoxx A. Fig Lee ParadoxxЗдравствуйте друзья,

Вопрос вазник такой.
Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B.
Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor?

Вообще то ето assignment operator. Copy constructor:
Код: plaintext
1.
B(const B&);

2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта.

когда вы пошите
B objB1 = objB; тo вызывается Copy constructor of class B,
assignment это когда оба обьекта уже init..
Ex:
objB1 = objB;

ну и что, что вызывается. Ето реализация такая. Ну или ткните мне пальцем в стандард где сказано, что ето копи-констрактор. Ето ассайнмент оператор, просто нет смысла конструировать, а потом присваивать значение - через копи-констрактор короче.
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342766
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A. Fig Lee Paradoxx A. Fig Lee ParadoxxЗдравствуйте друзья,

Вопрос вазник такой.
Когда есть class derived from another (class B:public A {...}), и когда создается object класса B, то вызывается констрыктор А потом B.
Но почемы когда (B objB1 = objB) вызызается copy constructor класса B то copy constructor класса A не вызызается, а в место этого вызызается default constructor?

Вообще то ето assignment operator. Copy constructor:
Код: plaintext
1.
B(const B&);

2. Вызывается не default constructor, a assignment operator который бай дефоулт копирует поля обьекта.

когда вы пошите
B objB1 = objB; тo вызывается Copy constructor of class B,
assignment это когда оба обьекта уже init..
Ex:
objB1 = objB;

ну и что, что вызывается. Ето реализация такая. Ну или ткните мне пальцем в стандард где сказано, что ето копи-констрактор. Ето ассайнмент оператор, просто нет смысла конструировать, а потом присваивать значение - через копи-констрактор короче.

Мне кажется вы запутались или я вас не понял, но это не важно.
...
Рейтинг: 0 / 0
copy constructor of base class
    #34342771
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирповедение by design..
хотите иного - указывайте конструктор явно:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>

class A
{
public:

	~A() { std::cout << "\n~A()"; }

	A() { std::cout << "\nA()"; }
	A( const A& a ) { std::cout << "\nA( const A& )"; }
};

class AA: public A
{
public:

	~AA() { std::cout << "\n~AA()"; }

	AA() { std::cout << "\nAA()"; }
	AA( const AA& aa ): A( aa ) { std::cout << "\nAA( const AA& )"; }
};

int main()
{
	AA aa1;
	AA aa2 = aa1;
	return  0 ;
}



То есть как я понял если не вызывать copy constructor base классa явно, то будет вызываться default constructor.
...
Рейтинг: 0 / 0
copy constructor of base class
    #34344119
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну да
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / copy constructor of base class
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]