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

Изучаю C++ иногда бывает непонятно - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.95
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
27.11.2012, 15:03     Изучаю C++ иногда бывает непонятно #1
Здравствуйте. Я изучаю С++ по книжкам, по видео и прочим заметкам в интернете. Уже где-то дней 7 учу. С++ первый язык который изучаю. Сейчас читаю
Название книги: Освой самостоятельно C++ за 24 часа, 4-е издание
Автор: Либерти, Джесс, Хорват, Дэвид
Кстати хорошая книга, советую начинающим.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2012, 15:03     Изучаю C++ иногда бывает непонятно
Посмотрите здесь:

Изучаю с++ C++
Бывает ли у вас такое C++
Изучаю С++ C++
изучаю классы C++
C++ В общем изучаю маленько как кодить в ТС, и вот такая шляпа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
29.11.2012, 17:05     Изучаю C++ иногда бывает непонятно
  #81

Не по теме:

Цитата Сообщение от taras atavin Посмотреть сообщение
проблем не вызывает при любом размере.
Как быть со сложной рекурсией?

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
29.11.2012, 17:09     Изучаю C++ иногда бывает непонятно #82
Цитата Сообщение от koderman Посмотреть сообщение
Но в маленьких программах прототип можно и не применять и это будет хорошим решением.
"Определение вполне можно поместить перед вызовом функции... в таком случае прототип больше не понадобится." - это верно сказано. То есть обе проги ниже корректны:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
// прототип
int foo();
 
int main()
{
    int x = foo(); // вызов функции 
}
 
// определение ф-ции
int foo()
{
    return 7;
}
C++
1
2
3
4
5
6
7
8
9
10
// определение ф-ции
int foo()
{
    return 7;
}
 
int main()
{
    int x = foo(); // вызов функции 
}
А вот это уже ошибка:
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    int x = foo(); // вызов функции 
}
 
// определение ф-ции
int foo()
{
    return 7;
}
Теперь то, что написано в твоем первом вложении: "Функция не обязана иметь параметры, и если она их не имеет, то прототип необязателен". Это не так, неважно есть у ф-ции параметры или нет, она должна иметь прототип или определена до своего вызова.
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 17:23  [ТС]     Изучаю C++ иногда бывает непонятно #83
День прошёл не зря)))
Всё таки выяснили как надо)
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 18:33  [ТС]     Изучаю C++ иногда бывает непонятно #84
Нашёл как использовать вызов функции без параметров. К сожалению, там не показан вариант совсем без параметров, но думаю можно сделать совсем без параметров. Как сделать без параметров и без прототипа ещё не нашёл))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 #include <iostream> 
 
 int AreaCube(int length, int width = 25, int height = 1); 
 
int main () 
 
 {
 
 int length = 100;
 
 int width = 50;
 
 int height = 2;
 
 int area; 
 
 area = AreaCube(length, width, height);
 
 std::cout << "First time area equals " << area << "\n"; 
 
 area = AreaCube(length, width);
 
 std::cout << "Second time area equals " << area << "\n"; 
 
 area = AreaCube(length);
 
 std::cout << "Third time area equals " << area << "\n";  
 
return 0;
 
 } 
 
 int AreaCube(int length, int width, int height) 
 {
 
 return (length * width * height);
 
 }
Миниатюры
Изучаю  C++ иногда бывает непонятно   Изучаю  C++ иногда бывает непонятно  
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
29.11.2012, 18:46  [ТС]     Изучаю C++ иногда бывает непонятно #85
Результат

First area equals: 10000 Second time area equals: 5000 Third time area equals: 2500
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
29.11.2012, 20:39     Изучаю C++ иногда бывает непонятно #86
Это цитата из книги
Такие споры решаются просто - ссылкой на стандарт. А там четко сказано, что в C++ default-int отсутствует.
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:17  [ТС]     Изучаю C++ иногда бывает непонятно #87
Где этот стандарт находится? Есть ли он на русском языке?
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.11.2012, 08:26     Изучаю C++ иногда бывает непонятно #88
Цитата Сообщение от koderman Посмотреть сообщение
К сожалению, там не показан вариант совсем без параметров, но думаю можно сделать совсем без параметров
Ты понял суть данного примера? И как работают параметры по умолчанию? Если в объявлении функции будут указаны значения по умолчанию для всех параметров, то можно будет вызывать функцию совсем без аргументов. То есть, например, такую функцию:
C++
1
int AreaCube(int length = 10, int width = 25, int height = 1);
Можно будет вызвать просто как
C++
1
AreaCube();
Тогда будут использованы значения по умолчанию 10, 25 и 1. И с помощью
C++
1
return (length * width * height);
Будет возвращен результат, в данном случае, как понимаешь 250.

Добавлено через 44 секунды
Цитата Сообщение от koderman Посмотреть сообщение
Как сделать без параметров и без прототипа ещё не нашёл))
Без прототипа, или без определения функции до ее вызова - никак.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
30.11.2012, 08:30     Изучаю C++ иногда бывает непонятно #89
Цитата Сообщение от koderman Посмотреть сообщение
Где этот стандарт находится? Есть ли он на русском языке?
http://alenacpp.blogspot.ru/2011/10/iso-c11.html
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 08:35  [ТС]     Изучаю C++ иногда бывает непонятно #90
Ага, понял, там хорошо объяснена эта тема. Но не указано как можно комбиниробать эти аргументы по умолчанию. Например если я хочу только первый элемент сделать по умолчанию, то придётся все элементы вместе с ним сделать такими же. Допустим если параметров больше трёх. Или например надо только 4ый, 8ой, 10ый и 12ый сделать такими. Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию. Гибкость программы исчезает.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
30.11.2012, 08:42     Изучаю C++ иногда бывает непонятно #91
Цитата Сообщение от koderman Посмотреть сообщение
Придётся вместе с ними ещё параметры перед этими числами делать по умолчанию.
Ну да, параметры со значениями по умолчанию должны находиться справа от обычных параметров.

C++
1
2
foo1(int a, int b = 8, int c = 11); // корректно
foo2(int a, int b = 8, int c); // ошибка! надо задать значение для c
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
30.11.2012, 09:27     Изучаю C++ иногда бывает непонятно #92
Цитата Сообщение от koderman Посмотреть сообщение
Гибкость программы исчезает.
Это сугубо Ваше мнение.
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 09:31  [ТС]     Изучаю C++ иногда бывает непонятно #93
Цитата Сообщение от Герц Посмотреть сообщение
Такие споры решаются просто - ссылкой на стандарт. А там четко сказано, что в C++ default-int отсутствует.
Ошибка "C++ does not support default-int"
Вот оно как оказывается.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
30.11.2012, 09:33     Изучаю C++ иногда бывает непонятно #94
Цитата Сообщение от koderman Посмотреть сообщение
Вот оно как оказывается.
Вам об этом уже не раз писали
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 09:42  [ТС]     Изучаю C++ иногда бывает непонятно #95
Говорят ещё можно компилятор настроить чтобы он компилировал как С, а у С есть default int
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,919
Записей в блоге: 2
Завершенные тесты: 1
30.11.2012, 09:44     Изучаю C++ иногда бывает непонятно #96
Цитата Сообщение от koderman Посмотреть сообщение
компилировал как С
Тогда это будет программа на языке Си, а не на Си++
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 11:16  [ТС]     Изучаю C++ иногда бывает непонятно #97
Такой вариант возможен?

foo1(int a, int b = 1,432, int c = 0,25);

Тоесть подставлять float параметры? Ведь int в прототипе ставится наверное только для тех чисел которые задаются в программе внутри фигурных скобок?
Герц
523 / 340 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
30.11.2012, 11:20     Изучаю C++ иногда бывает непонятно #98
Так вообще нельзя, разделитель - точка. В остальном - кто мешает тебе проверить самому? :-)
koderman
2 / 2 / 1
Регистрация: 27.11.2012
Сообщений: 131
30.11.2012, 11:23  [ТС]     Изучаю C++ иногда бывает непонятно #99
foo1(int a, int b = 1.432, int c = 0.25);
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.11.2012, 11:25     Изучаю C++ иногда бывает непонятно
Еще ссылки по теме:

Изучаю классы, что-то не выходит C++
Openssl. Иногда вызов функций шифрования проходит нормально, иногда нет C++
Почему иногда отслеживается нажатие на три клавиши сразу, а иногда нет C++

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

Или воспользуйтесь поиском по форуму:
0x10
2426 / 1598 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
30.11.2012, 11:25     Изучаю C++ иногда бывает непонятно #100
Целочисленной переменной присваиваем значение с плавающей точкой? Круто.
Yandex
Объявления
30.11.2012, 11:25     Изучаю C++ иногда бывает непонятно
Закрытая тема Создать тему
Опции темы

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