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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
#1

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

22.06.2012, 17:26. Просмотров 355. Ответов 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);. Как можно подробнгей расскажите о ней. Буду благодарен, и за простые примеры испльзование.
Что такое помню для задания в функциях значений. Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 17:26     не до понимание в наследовании
Посмотрите здесь:

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

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

3 программы на понимание - C++
Найти сумму двух матриц А(N,M) и В(N,M) Найти произведение двух матриц А(N,M) и В(M,K) Найти произведение матрицы А(N,M) на вектор В(N)...

Понимание сокращенного кода - C++
for (int i = A.size; i > 0; i -= 9) { s = 0; A.num = atoi (i >= 9 ? s + i - 9 : s); k++; } Пробегаемся по строке s и...

Понимание препроцессора в языке программирования - C++
Здравствуйте, вот думаю над этими вопросами, а препод говорит обьяснить более подробно, чтобы даже ребенок понял(что за фанатизм?)....

Понимание адреса, ссылки и указателя - C++
Гм... Конечно, стремно создавать подобную тему, однако, уж очень захотелось понять все это дело. Правда сколько раз ни пытался - не...

Понимание процесса разворачивания стека - C++
Правильно ли я понимаю, что это приблизительно следующее: Начнем с того что вызовы функций или методов могут быть вложенными и в самом...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 17:50     не до понимание в наследовании #2
Point(a, b) - это конструктор базового класса, который вызывается конструктором производного класса.
Catstail
Модератор
22457 / 10862 / 1769
Регистрация: 12.02.2012
Сообщений: 17,989
22.06.2012, 18:03     не до понимание в наследовании #3
Давай по-простому: точка - это точка, а круг - это точка (центр) и еще кое-что. Создаем круг - нужно создать центр? Вот его и создает вызов конструктора базового класса.
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:22  [ТС]     не до понимание в наследовании #4
а можите пожалуйста с простыми примерами и что ещё можно с этим сделать?
David Sylva
1285 / 947 / 51
Регистрация: 17.05.2012
Сообщений: 2,687
22.06.2012, 18:25     не до понимание в наследовании #5
С этим это с твоим кодом или тебе нужны примеры по наследованию.
No10
30 / 28 / 2
Регистрация: 03.06.2010
Сообщений: 465
22.06.2012, 18:30  [ТС]     не до понимание в наследовании #6
примеры с этим : Point(a, b); и с наследованием
alsav22
5416 / 4812 / 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
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++
Написать функцию, принимающую вещественное число типа float, превращающую его в целое типа int с сохранением битового представления,...

Понимание для чего вообще нужны указатели? - C++
Сейчас будет чистый мой тупняк. Слабонервным дальше не читать. Итак, для чего вообще нужны указатели? Я вот не пойму, зачем их надо было...

Ошибка в наследовании - C++
Появилась проблема в наследовании с использованием виртуальных методов. Если записать код вот так, присваивая значения переменным не в...

О виртуальном наследовании - C++
Хотелось бы с Вашей помощью разобраться в деталях виртуального наследования. Вопрос такой: что на физическом уровне означает выражение ...

Ошибка в наследовании - C++
Всем привет. Есть такой код: #include <iostream> using namespace std; class A { public : A(){}


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

Или воспользуйтесь поиском по форуму:
David Sylva
1285 / 947 / 51
Регистрация: 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; 
}
Сначала выполняется конструктор базового класса, а за ним конструткор производного.
Yandex
Объявления
22.06.2012, 18:56     не до понимание в наследовании
Ответ Создать тему
Опции темы

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