Форум программистов, компьютерный форум CyberForum.ru

не до понимание в наследовании - C++

Восстановить пароль Регистрация
 
No10
 Аватар для No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 17:26     не до понимание в наследовании #1
у нас есть допустим 2 класса. Один circle, другой Point. Circle наследует от Point. Тоесть Point базовый класс а Circle производный.

ну например:
C++
1
2
3
4
5
6
7
8
9
class Point {
  public:
    Point(float = 0.0, float = 0.0);
    float getX() const;
    float setX(float);
  protected:
    float x;
    float y;
}
и
C++
1
2
3
4
5
class Circle : public Point {
      Circle(float radius = 0.0, float x = 0.0, float y = 0.0);
   protected:
      float radius;
}
и ещё например конструктор Circle
C++
1
2
3
4
5
Circle::Circle(float r, float a, float b)
       : Point(a, b);
{
   radius = r;
}
Самое не понятно это вот эта фишка : Point(a, b);. Как можно подробнгей расскажите о ней. Буду благодарен, и за простые примеры испльзование.
Что такое помню для задания в функциях значений. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 17:26     не до понимание в наследовании
Посмотрите здесь:

3 программы на понимание C++
C++ Понимание сокращенного кода
C++ Понимание для чего вообще нужны указатели?
Понимание адреса, ссылки и указателя C++
Понимание С++ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
22.06.2012, 17:50     не до понимание в наследовании #2
Point(a, b) - это конструктор базового класса, который вызывается конструктором производного класса.
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
22.06.2012, 18:03     не до понимание в наследовании #3
Давай по-простому: точка - это точка, а круг - это точка (центр) и еще кое-что. Создаем круг - нужно создать центр? Вот его и создает вызов конструктора базового класса.
No10
 Аватар для No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:22  [ТС]     не до понимание в наследовании #4
а можите пожалуйста с простыми примерами и что ещё можно с этим сделать?
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
22.06.2012, 18:25     не до понимание в наследовании #5
С этим это с твоим кодом или тебе нужны примеры по наследованию.
No10
 Аватар для No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:30  [ТС]     не до понимание в наследовании #6
примеры с этим : Point(a, b); и с наследованием
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.06.2012, 18:31     не до понимание в наследовании #7
В объекте производного класса содержится и объект базового класса. При создании объекта производного класса программа сначала создаёт объект базового класса, т.е. он должен быть создан перед тем, как программа перейдёт непосредственно к телу конструктора производного класса. Для этого используется список инициализаторов. В нём прописан вызов конструктора базового класса: Point(a, b), с параметрами a и b, кторые передаются в него через параметры конструктора для Circle. Если, в конструкторе производного класса, конструктор базового класса явно не вызывается (например, будет написано так: Circle::Circle(float r, float a, float b) {...}), то неявно будет вызван конструктор по умолчанию базового класса. В данном примере: Point() или, что тоже самое, Point(0.0, 0.0). Т.е., при создании объекта производного класса, объект базового класса будет создан в любом случае и первым.
No10
 Аватар для No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:31  [ТС]     не до понимание в наследовании #8
ну можно только не Point а что то другое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2012, 18:56     не до понимание в наследовании
Еще ссылки по теме:

Правильное понимание C++
Задачка на понимание указателей, преобразование типов C++
C++ Понимание препроцессора в языке программирования

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
David Sylva
 Аватар для David Sylva
1281 / 943 / 51
Регистрация: 17.05.2012
Сообщений: 2,686
22.06.2012, 18:56     не до понимание в наследовании #9
Базовый пример из учебника по конструкторам и деструкторам

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream> 
using namespace std; 
 
class base 
{ 
public: 
    base() { cout << "Sosdanie base obiekta \n"; } 
    ~base() { cout << "Rasrushenie base obiekat \n"; } 
}; 
 
class derived : public base 
{ 
public: 
    derived() { cout << "Sosdaniederived obiekta \n"; } 
    ~derived() { cout << "Rasrushenie derived obiekta \n"; } 
}; 
 
int main() 
{ 
    derived ob; 
}
Сначала выполняется конструктор базового класса, а за ним конструткор производного.
Yandex
Объявления
22.06.2012, 18:56     не до понимание в наследовании
Ответ Создать тему
Опции темы

Текущее время: 21:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru