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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
#1

Непонятные моменты из Страуструпа и не только - C++

25.08.2013, 02:52. Просмотров 1591. Ответов 56
Метки нет (Все метки)

Начал я читать Страуструпа, там употребляется много новых слов для меня, вот по ним и вопросы (по порядку)
Но пока не из него: что значит auto (до с++11) ? Во многих статьях говорят, что оно делает переменную локальной (т.е все автоматические и смысла писать нет), но не очень понятно, а написано про это мало.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
1253 / 1136 / 54
Регистрация: 21.04.2012
Сообщений: 2,359
Завершенные тесты: 3
26.08.2013, 01:40     Непонятные моменты из Страуструпа и не только #41
Цитата Сообщение от BuGi Посмотреть сообщение
Нет конструкторов, функций/методов внутри и пр?
Зачем, так никаких private/protected всё равно нет...
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 00:19  [ТС]     Непонятные моменты из Страуструпа и не только #42
Новые вопросы

C++
1
2
3
4
struct address
{
char* state[2];
};
Идет присваивание {'N','J'}
Но ведь там массив указателей? Тем более этот пример у меня не компилируется
iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 478
Завершенные тесты: 1
28.08.2013, 02:29     Непонятные моменты из Страуструпа и не только #43
видимо опечатка, тогда получится
C++
1
char state[2] = {'N', 'J'};
zer0mail
Заблокирован
28.08.2013, 09:58     Непонятные моменты из Страуструпа и не только #44
Цитата Сообщение от BuGi Посмотреть сообщение
Новые вопросы

C++
1
2
3
4
struct address
{
char* state[2];
};
Идет присваивание {'N','J'}
Но ведь там массив указателей? Тем более этот пример у меня не компилируется
И что в книге так и написано: "Идет присваивание?" Ну неужели трудно приводить примеры в точности как там написано, а не свои толкования?
Hrobak
288 / 168 / 11
Регистрация: 22.03.2010
Сообщений: 483
Завершенные тесты: 1
28.08.2013, 10:09     Непонятные моменты из Страуструпа и не только #45
Цитата Сообщение от BuGi Посмотреть сообщение
Идет присваивание {'N','J'}
Но ведь там массив указателей? Тем более этот пример у меня не компилируется
Не до конца понял, где и какое присваивание. В данном случае у нас массив из двух строк как поле структуры. Если я правильно понял, можно записать так:
C++
1
2
3
4
5
6
struct address
{
    char* state [2];
};
 
address a {{"N","J"}};
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 11:30  [ТС]     Непонятные моменты из Страуструпа и не только #46
Hrobak, ну да, такое присваивание было просто подумал, что присваивание одному элементу и всему объекту структуры имеет тот же смысл
zer0mail
Заблокирован
28.08.2013, 12:01     Непонятные моменты из Страуструпа и не только #47
Думай что хочешь, но примеры пиши, как в книге, иначе получиться не обсуждение Страуструпа, а обсуждение тараканов в голове ТС (который, вишь, "просто подумал")
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 12:22  [ТС]     Непонятные моменты из Страуструпа и не только #48
zer0mail, хорошо) Но почему как в книге работает, а как я написал нет?
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 12:29     Непонятные моменты из Страуструпа и не только #49
Цитата Сообщение от BuGi Посмотреть сообщение
Но почему как в книге работает, а как я написал нет?
потому что все что в двойных кавычках это строковый литерал,
который имеет тип const char[N],
где N это длинна строкового литерала с учетом символа конца строки.
и этот const char[N] неявно преобразовывается к char*, что чревато в будущем
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 22:26  [ТС]     Непонятные моменты из Страуструпа и не только #50
Как мне кажется, это надо не обсуждать, а принимать как должное
Кстати, я писал с одной кавычкой)
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 22:28     Непонятные моменты из Страуструпа и не только #51
Цитата Сообщение от BuGi Посмотреть сообщение
Кстати, я писал с одной кавычкой)
с одной кавычкой оно вообще не должно компилироваться
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 22:28  [ТС]     Непонятные моменты из Страуструпа и не только #52
http://habrahabr.ru/post/64369/
C++
1
2
3
4
5
class Skill     // aka Jutsu =)
{
public:
    // virtual (envelope) constructor (see below)
    Skill(int _type) throw (std::logic_error);
Конструктор вызывает исключение?
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 22:40     Непонятные моменты из Страуструпа и не только #53
Цитата Сообщение от BuGi Посмотреть сообщение
Конструктор вызывает исключение?
нет, это спецификация исключений - указание того какие исключения могут быть выброшены из функции.
крайне не эффективная штука это раз. не поддерживается всеми компиляторами это два.
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 22:41  [ТС]     Непонятные моменты из Страуструпа и не только #54
Jupiter, в жабе такое видел. ведь их не обязательно писать?
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 23:00     Непонятные моменты из Страуструпа и не только #55
Цитата Сообщение от BuGi Посмотреть сообщение
ведь их не обязательно писать?
их никто и не пишет ибо
Цитата Сообщение от Jupiter Посмотреть сообщение
крайне не эффективная штука это раз. не поддерживается всеми компиляторами это два.
BuGi
24 / 24 / 1
Регистрация: 02.01.2012
Сообщений: 371
28.08.2013, 23:19  [ТС]     Непонятные моменты из Страуструпа и не только #56
Т.е задумывалось как в жабе (точнее скорей в ней все профиксили): есть список исключений, которые могут вызываться => их надо занести в список перед функцией, но на самом деле это никто не делает?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2013, 23:50     Непонятные моменты из Страуструпа и не только
Еще ссылки по теме:

C++ Задание из Страуструпа
C++ Достаточно ли книги Страуструпа?
Задача из книги Страуструпа C++
C++ Калькулятор Страуструпа (C++)
Калькулятор Страуструпа С++ C++

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

Или воспользуйтесь поиском по форуму:
Jupiter
Каратель
Эксперт C++
6549 / 3969 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.08.2013, 23:50     Непонятные моменты из Страуструпа и не только #57
Цитата Сообщение от BuGi Посмотреть сообщение
есть список исключений, которые могут вызываться => их надо занести в список перед функцией, но на самом деле это никто не делает?
да, но все же есть одно исключение из "правила" пожалуй - пустая спецификация исключений, то что вы встретите даже в стандартной библиотеке
C++
1
2
3
4
5
class Skill     // aka Jutsu =)
{
public:
    // virtual (envelope) constructor (see below)
    Skill(int _type) throw ()
которая означает что конструктор Skill гарантировано не бросает исключений, но в с++11 специально для этого ввели noexcept

Не по теме:

имхо тема превращается в помойку, лучше создавай новую тему на каждый вопрос/серии вопросов по одной теме

Yandex
Объявления
28.08.2013, 23:50     Непонятные моменты из Страуструпа и не только
Ответ Создать тему
Опции темы

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