Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2010, 13:19   #1
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию Вызов из потомка конструктор родителя

Как на с++ вызывается конструктор-родителя от конструктора-потомка.
На яве так работает:
Код:
package u;
 class A{
private int a,b,c;
A(){}
A(int x1, int y1, int z1){
    a = x1; b = y1; c = z1;
 }


void result(){
   System.out.println(a*b*c);
}
}

 class B extends A{
    B(){}
    B(int s1, int s2, int s3){
        super(s1,s2,s3);
    }
}

public class Main {
    public static void main(String[] args) {
     B obj = new B(5,7,9);
     obj.result();
    }

}
На пхп так работает:
Код:
<?php
class Base {
 
private  $a, $b, $c;
function Base($x, $y, $z){
    $this->a = $x; $this->b = $y; $this->c = $z;
}
 function result(){
    echo $this->a*$this->b*$this->c;
 }
}
 
class B extends Base {
  function B($w1,$w2, $w3){
  parent::Base($w1,$w2,$w3);
  }
 }
 
$obj = new B(1,2,3);
$obj->result();
 
?>
Пробую так на с++, не срабатывает:
Код:
#include <iostream>
using namespace std;

class A{
private: int a,b,c;
public:
	A(){}
	A(int x1,int x2, int x3)
	{
		a = x1;  b = x2;  c = x3;
	}
	void yra(){
		cout<<a*b*c;
	}
	
};

class B:public A{
public:
	B(){}
	B(int w1, int w2, int w3){
		super(w1,w2,w3);
	}
};



int main() {

	B *obj = new B(1,2,3);
	obj->yra();
	cin.get();
}
Golovastik вне форума Ответить с цитированием
Старый 03.07.2010, 13:25   #2
Carbon
JAVA BEAN
Участник клуба
 
Аватар для Carbon
 
Регистрация: 22.04.2007
Сообщений: 1,329
По умолчанию

B(int w1, int w2, int w3) : A(w1, w2, w3)
Carbon вне форума Ответить с цитированием
Старый 03.07.2010, 13:43   #3
Golovastik
Заблокирован
 
Регистрация: 25.05.2009
Сообщений: 284
По умолчанию

Да точно, вот так сработало.
Код:
#include <iostream>
using namespace std;

class A{
private: int a,b,c;
public:
	A(){}
	A(int x1,int x2, int x3)
	{
		a = x1;  b = x2;  c = x3;
	}
	void yra(){
		cout<<a*b*c;
	}
	
};

class B:public A{
public:
	B(){}
	B(int w1, int w2, int w3):A(w1,w2,w3){}
};



int main() {

	B *obj = new B(1,2,3);
	obj->yra();
	cin.get();
}
Скажите о чём говорит вот эта строка:
B(int w1, int w2, int w3):A(w1,w2,w3){}
Что означает двуеточие в этой строке и о чём говорит эта строка?
Golovastik вне форума Ответить с цитированием
Старый 03.07.2010, 15:34   #4
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Код:
B(int w1, int w2, int w3):A(w1,w2,w3){}
Что означает двуеточие в этой строке и о чём говорит эта строка?
Будет вызван конструктор родителя класса A, перед выполнением кода указанного в блоке {...} конструктора чада B.
BOBAH13 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно компонент может повесить Хук на сообщения(родителя/приложения) Пепел Феникса Компоненты Delphi 2 12.07.2009 00:51
Помогите создать потомка от TDataSet WESTBRIG Помощь студентам 0 08.06.2009 16:35
Перепутал родителя)) nusik Общие вопросы C/C++ 2 26.05.2009 11:40
Как поменять родителя компонента? Avron Общие вопросы Delphi 3 02.10.2007 16:47