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

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

Войти
Регистрация
Восстановить пароль
 
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
#1

Вопросы начинающего - C++

21.10.2010, 16:34. Просмотров 729. Ответов 10
Метки нет (Все метки)

Здравствуйте в С++ я еще новичок, поэтому, если позволите то я задам несколько вопросов
-class A: public B
По-смыслу это значит что класс А должен унаследовать все pubic методы класса B, я прав?
- Как создать дву(и более)мерный массив
Предположу что массивы могут быть только одно и двумерные(максимум 3-мерные) из-за того что например непонятна структура 4 мерного массива
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2010, 16:34     Вопросы начинающего
Посмотрите здесь:

Вопросы начинающего - C++
Здравствуйте. Самостоятельно приступила к изучению Visual C++, т.к. наставников в шаговой доступности нет, а вопросы есть, решила...

C++ для начинающего! - C++
Добрый день! Вопрос местным знатокам и гуру. Есть желание начать программировать на C++. Проблема в том, что не знаю, с чего начать. Книг...

Вопрос начинающего - C++
Здравствуйте. Мне сейчас 16 лет и в сентябре я пойду в 11 класс (я школота). В будущем я хочу стать программистом. Сейчас я уже учу...

Подскажите для начинающего! - C++
Подскажите с чего лучше начать изучать программирование для начинающего? Какие книги нужны?С какого языка начать? Программированием...

Книга для начинающего - C++
Подскажите, какая книга будет мне лучше, если учесть что немного знаю С#: Самоучитель по С++(читал что требуется знание языка Си) или С++...

Книга для начинающего по С++ - C++
Скажите, какая книга доступно мне покажет программирование на С++??? вопрос от новичка, даже не могу ничего посоветовать... Может вы...

Opengl и С++ для начинающего - C++
Приветствую всех! Можете пожалуйста подсказать хорошую книгу или видео урок по opengl и c++ для начинающего. Спасибо за ответы! ;)

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
21.10.2010, 19:21     Вопросы начинающего #2
hepr, 1. Нет. Это открытое наследование. Паблик и протектед наследует. Доступ к приват элементам - закрыт.

2. Четырехмерный массив.
int Arr[n][n][n][n];
Но как с ним работать - другой вопрос. Такого лучше избегать.
Двумерный соответственно либо:
int Arr[n][n];
либо
int** Arr;

+ Любой массив n-мерной размерности можно представить в виде одномерного.
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
21.10.2010, 22:58  [ТС]     Вопросы начинающего #3
1)Но насколько я знаю privatre члены класса вообще никогда не наследуются
2)А чем такое наследование отличается от A:B
3)А какие еще есть виды наследования и чем они отличаются
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
21.10.2010, 23:52     Вопросы начинающего #4
hepr, 2) A:B - как раз приватное наследование.
3) Соответственно открытое, закрытое и защищенное
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.10.2010, 00:40     Вопросы начинающего #5
Цитата Сообщение от hepr Посмотреть сообщение
1)Но насколько я знаю privatre члены класса вообще никогда не наследуются
2)А чем такое наследование отличается от A:B
3)А какие еще есть виды наследования и чем они отличаются
При любом виде наследования наследуется всё кроме конструкторов, деструктора и оператора копирующего присваивания.
Открытое наследование реализует отношение "является разновидностью", а закрытое - "реализуется посредством", но это отношение рекомендуется реализовывать вложением, т.е. делать объект одного класса членом другого. Защищенное наследование по-моему вообще не применяется.
IchMors
97 / 93 / 4
Регистрация: 16.05.2010
Сообщений: 310
22.10.2010, 01:10     Вопросы начинающего #6
а разве при открытом наследовании в том числе не наследуются private элементы? О_о по моему не наследуются только protected, ну и соответственно конструкторы/деструкторы и тд.
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
22.10.2010, 10:23  [ТС]     Вопросы начинающего #7
Нет вы не правы, privete тем и отличаются от protected что наследуются
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.10.2010, 11:00     Вопросы начинающего #8
Цитата Сообщение от hepr Посмотреть сообщение
По-смыслу это значит что класс А должен унаследовать все pubic методы класса B, я прав?
Нет. Если через двоеточие указан B, то наследуются все го члены, не зависимо от спецификаторов видимости. Но если не указать public, то public члены B в A становятся protected, а если указать, то они остаются public. Причём, private члены, хоть и наследуются, но методы класса A не имеют к ним прямого доступа, только через protected и public методы класса B.

Добавлено через 1 минуту
Цитата Сообщение от hepr Посмотреть сообщение
Нет вы не правы, privete тем и отличаются от protected что наследуются
Не этим. protected не только наследуется, но и открыт для потомков, а private закрыт, но данные с этим спецификатором тоже наследуются и под них в объектах, чей тип - потомок, отводится память, только защищённая.

Добавлено через 10 минут
Цитата Сообщение от hepr Посмотреть сообщение
Как создать дву(и более)мерный массив
Никак. Но можно создать массив массивов. На языках, поддерживающих многомерность, многомерный массив и массив массивов - синонимы:
Pascal
1
2
3
4
5
6
var a:array[1..100,1..100] of real; // двумерный массив
v:array[1..100] of real; // Одномерный массив
begin
a[1]:=b; // Элемент a[1] массива a адресуется как элемент-массив одномерного массива. Допустимо с точки зрения паскаля.
a[2][2]:=3; // Элемент a[2] массива a адресуется как элемент-массив одномерного массива, а его элемент a[2][2] адресуется как элемент типа real одномерного массива. Допустимо с точки зрения паскаля.
a[3,3]:=4; // Элемент a[3,3] массива a адресуется как элемент типа real двумерного массива. Допустимо с точки зрения паскаля.
. Обрати внимание, что так адресуется один и тот же массив. На сях же такой синонимичногсти нет, поэтому:
C++
1
2
3
float a[100][100];
a[1][1]=1; // Допустимо
a[2,2]=2; // Не допустимо
C
1
2
3
float a[100][100];
a[1][1]=1; // Допустимо
a[2,2]=2; // Не допустимо
C#
1
2
3
float a[100][100];
a[1][1]=1; // Допустимо
a[2,2]=2; // Не допустимо
.

Добавлено через 3 минуты
Цитата Сообщение от hepr Посмотреть сообщение
Предположу что массивы могут быть только одно и двумерные(максимум 3-мерные) из-за того что например непонятна структура 4 мерного массива
Понятна. На бейсике я начал массивы сразу с шестимерных и никаких сложностей это не вызывало.

Добавлено через 3 минуты
Цитата Сообщение от Lavroff Посмотреть сообщение
Такого лучше избегать.
Я плохо себе представляю области возможного применения массивов с размерностями 1, 3 и 4, а для двумерных знаю только одно применение - матрицы коэффициентов систем уравнений. А начиная с пяти - нормально.

Добавлено через 4 минуты
Цитата Сообщение от IchMors Посмотреть сообщение
ну и соответственно конструкторы/деструкторы и тд.
А как тогда вообще наследовать при наличии private?

Добавлено через 57 секунд
Цитата Сообщение от Lavroff Посмотреть сообщение
+ Любой массив n-мерной размерности можно представить в виде одномерного
массива массивов размерности n-1. Причём, на любом языке, поддерживающем массивы.
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 539
22.10.2010, 11:01  [ТС]     Вопросы начинающего #9
Еще пару вопросов если позволите:
Как сделать указатель
- A* B
Объявляю указатель B на A
Как сделать ссылку
A& B
Аналогично
Я прав?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
22.10.2010, 11:14     Вопросы начинающего #10
Цитата Сообщение от hepr Посмотреть сообщение
Еще пару вопросов если позволите:
Как сделать указатель
- A* B
Объявляю указатель B на A
Как сделать ссылку
A& B
Аналогично
Я прав?
Да. Только не по всех случаях уместны пустые ссылки, как ты здесь объявил. Объявлять прямо так имеет смысл только ссылку-параметр функции. А в остальных случаях
C++
1
2
A a;
A &b=a;
, причём, смысла и в этом маловато, так как адрес ссылки можно менять только один раз и только если она объявлена как пустая, но параметром не является.

Добавлено через 7 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
На сях же такой синонимичногсти нет
Кстати, это мелочь, так как разница всего лишь в синтаксисе адресации элементов, а не в семанитике. Поэтому я сам часто зову сёвый массив массивов двумернным.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2010, 13:29     Вопросы начинающего
Еще ссылки по теме:

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

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

Трудности начинающего программиста - C++
Всем привет, сегодня я решил начать изучать С++, так как в школе я прогуливал уроки информатики, поэтому в программировании я ничего не...

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

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


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

Или воспользуйтесь поиском по форуму:
Mr.X
Эксперт С++
3048 / 1693 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
22.10.2010, 13:29     Вопросы начинающего #11
Цитата Сообщение от taras atavin Посмотреть сообщение
...Но если не указать public, то public члены B в A становятся protected, а если указать, то они остаются public.
Если не указывать в наследовании public, то по умолчанию там будет private, что означает, что все унаследованные члены базового класса станут private.
Yandex
Объявления
22.10.2010, 13:29     Вопросы начинающего
Ответ Создать тему
Опции темы

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