Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
1

не до понимание в наследовании

22.06.2012, 17:26. Показов 536. Ответов 8
Метки нет (Все метки)

у нас есть допустим 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);. Как можно подробнгей расскажите о ней. Буду благодарен, и за простые примеры испльзование.
Что такое помню для задания в функциях значений. Заранее спасибо!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.06.2012, 17:26
Ответы с готовыми решениями:

Понимание С++
Приветствую. У меня такой вопрос. Если я сейчас учусь с++ (читаю книгу), то нужно в этой книге...

Основы на понимание
Доброй ночи. Хотел бы попросить опытных людей, скинуть ссылки или материалы на изучение 1с, но...

Понимание мультиязычности
Сайт на Joomla 2.5 3 языка сделаны стандартными средствами CMS Никак не могу понять логику...

Правильное понимание
ifstream file; file.open(way1.c_str()); getline(file, name); getline(file, fam);...

8
1315 / 977 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 17:50 2
Point(a, b) - это конструктор базового класса, который вызывается конструктором производного класса.
1
Модератор
Эксперт Python
28992 / 15783 / 3136
Регистрация: 12.02.2012
Сообщений: 25,928
Записей в блоге: 4
22.06.2012, 18:03 3
Давай по-простому: точка - это точка, а круг - это точка (центр) и еще кое-что. Создаем круг - нужно создать центр? Вот его и создает вызов конструктора базового класса.
1
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:22  [ТС] 4
а можите пожалуйста с простыми примерами и что ещё можно с этим сделать?
0
1315 / 977 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 18:25 5
С этим это с твоим кодом или тебе нужны примеры по наследованию.
1
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:30  [ТС] 6
примеры с этим : Point(a, b); и с наследованием
0
5480 / 4875 / 831
Регистрация: 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). Т.е., при создании объекта производного класса, объект базового класса будет создан в любом случае и первым.
0
30 / 28 / 4
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:31  [ТС] 8
ну можно только не Point а что то другое
0
1315 / 977 / 267
Регистрация: 17.05.2012
Сообщений: 2,687
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; 
}
Сначала выполняется конструктор базового класса, а за ним конструткор производного.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2012, 18:56

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Понимание MVC
Здравствуйте. Есть вопрос по пониманию MVC. У меня есть view, который содержит таблицу. Эта...

Понимание рекурсии
Ребята. Подскажите как можно понять рекурсию. Плотно застрял нна рекурсивных алгоритмах. Никак не...

Понимание асинхронности
Почему если я вызову функцию: function a(callback){ for (var a=0;a&lt;100000000000;a++) ...

Не понимание преобразования
Всем добрый день.Дано выражение tg^2(3π/2 - α) - ctg^2(3π/2 + α/2) я его привожу к виду:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.