powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как вызвать конструктор предка?
10 сообщений из 10, страница 1 из 1
Как вызвать конструктор предка?
    #33429475
Zmiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пишу на с++ совсем недавно. Вопрос такой:
стандартная прога про классы (в универе надо). То есть точка - круг - цилиндр.
Так вот не пойму как в конструкторе круга вызвать конструктор точки?
В дельфи было так:

constructor ring.create(var x,y,r:integer);
begin
Inherited create(x,y);
point.create(x,y);
self.r:=r
end;

В с++ написал:


Код: plaintext
1.
2.
3.
4.
Ring(int x, int y, int r) {
                      this->x = x;
                      this->y = y;
                      this->r = r;
             };
Пишеть что нету конструктора предка. А вот как его прописать то?
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33429551
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Ring(int x, int y, int r) : Point(x,y) {
                      this->r = r;
             };


типа того
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33434181
xrgh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--null--
Код: plaintext
1.
2.
3.
4.
Ring(int x, int y, int r) : Point(x,y) {
                      this->r = r;
             };


типа того

Код: plaintext
1.
Ring(int x, int y, int r) : Point(x,y), r(r) {  };
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33862090
Барбудас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почти по теме...
я только учусь с++ (на примере VS2005 c++.net) поэтому вопрос есс-но глупый. но реально уже стало жалко времени, потраченного на поиски.

с вызовом базового конструктора понятно.
как вызвать другой конструктор данного класса?
в с# это выглядит примерно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
class A{

private A(){
     // common code
}

public A(int i): this(){
    // special code for i
}

//...  other constructors

// ...

}

и еще вопрос. как использовать список параметров переменной длины, в с# это выгллядит как
Код: plaintext
1.
2.
 
void aaa(params objeect[] objects)

Нашел про ParamArrayAttribute и ... но никаких примеров использования, рекомендаций.

Спасибо. Не судите строго.
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33862731
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барбудаспочти по теме...
я только учусь с++ (на примере VS2005 c++.net) поэтому вопрос есс-но глупый. но реально уже стало жалко времени, потраченного на поиски.


И куда ж ты это время тратил, что искал-то ? Порнуху ?
Все твои вопросы в любом FAQ по C++ есть.
comp.lang.cpp например:

http://www.parashift.com/c++-faq-lite/ - смотри раздел Constructors.

или

http://www.faqs.org/faqs/C++-faq/part1/

с вызовом базового конструктора понятно.
как вызвать другой конструктор данного класса?

Тут есть два варианта ответа (в FAQ наверное будет первый).

традиционный: вызвать конструктор в произвольном месте нельзя.
Если вам нужна общая инициализация - напишите отдельную функцию
инициализации и вызывайте ее во всех конструкторах.

современный: конструктор можно вызвать в любое время с
помощью placement new.

Я бы на твоем месте придерживался традиционного подхода.
Вызов placement new все же несет определенную семантическую
нагрузку - инициализацию одного объекта в памяти другого,
поэтому просто так за ради вызова общей инициализации
его использовать IMHO не стоит.

и еще вопрос. как использовать список параметров переменной длины, в с# это выгллядит как
Код: plaintext
1.
2.
 
void aaa(params objeect[] objects)

Код: plaintext
1.
2.
 
void aaa(some_type param1, ...)

Также смотри в том же FAQ.
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33863620
Барбудас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо. полезные ссылки, буду пользовать.

собственно, так и поступил, как традиционный метод описывает: создал функцию инициализации. думал, что временно, до того, как найду нужный синтакс. :))

про порнуху - ничего не имею Вам сказать на это. это наверно такая очень смешная шутка. хорошая, проверенная временем, как хорошее вино. поэтому "гыыы".

в любом случае, я Вам благодарен за участие и реальную (!!! ибо хорошая ссылка - это для меня сейчас ценно!) помощь.
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33864088
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmiyпишу на с++ совсем недавно. Вопрос такой:
стандартная прога про классы (в универе надо). То есть точка - круг - цилиндр.
Так вот не пойму как в конструкторе круга вызвать конструктор точки?
В дельфи было так:

constructor ring.create(var x,y,r:integer);
begin
Inherited create(x,y);
point.create(x,y);
self.r:=r
end;

В с++ написал:


Код: plaintext
1.
2.
3.
4.
Ring(int x, int y, int r) {
                      this->x = x;
                      this->y = y;
                      this->r = r;
             };
Пишеть что нету конструктора предка. А вот как его прописать то?
Может я чего-то не понимаю и сильно отстал от жизни... Но почему нельзя отнаследоваться от класса Point?
(Т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Point
{
....
}

class Ring : public Point
{
.....
}
)
В этом случае нужный конструктор сам вызовется....
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33864243
Sandro_K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.
Может я чего-то не понимаю и сильно отстал от жизни... Но почему нельзя отнаследоваться от класса Point?
(Т.е.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Point
{
....
}

class Ring : public Point
{
.....
}
)
В этом случае нужный конструктор сам вызовется....

Если у предка конструктор с параметрами, то его надо вызвать явно, сам он не вызовется
Код: plaintext
1.
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33864495
Барбудас
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав C.
Вопрос, на который вы ответили, автор задал 11 дек 05

Не думаю, что он еще актуален )))

Его поднял up я , за что прошу прощения , если ввел вас в заблуждение. Просто не люблю создавать новые ветки, если имеется с похожей темой.
...
Рейтинг: 0 / 0
Как вызвать конструктор предка?
    #33865566
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Барбудас
про порнуху - ничего не имею Вам сказать на это. это наверно такая очень смешная шутка. хорошая, проверенная временем, как хорошее вино.


Да, именно так. Мог бы просто посмеяться.

Барбудас
поэтому "гыыы".

Аааа, так всё-таки посмеялся !!!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как вызвать конструктор предка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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