Форум программистов, компьютерный форум, киберфорум С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 5

Вопрос об особенности char и конструкторах

24.12.2008, 13:25. Показов 1496. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1. Хочу вывести на экран таблицу символов ascii:
Code Скопировано
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
 int main()
 {
     unsigned short T;
 
     for (char p=0; p<=255; p++ ) 
     {
         T=p;
         std::cout << p << " : " << T <<"\n";
     }
 
     return 0;
 }
Почему при использовании char p в цикле программа попадает в непонятный бесконечных цыкл?
Если же я использую в цикле шорт, а затем присваиваю его значение чар, то все ОК. Почему так?
Какие особенности типа чар в с++? он что знакойвый первоначально?
Розбераюсь в асме, паскакале, а тут си++ на мелочах изучение тормозит..

2.
Вот такой книжный пример:
Code Скопировано
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 // Listing 12.5
 
 // Resolving memory leaks
 
 #include <iostream>
 
 
 
 class SimpleCat
 
 {
 
 public:
 
     SimpleCat (int age, int weight);
 
     ~SimpleCat() {}
 
     int GetAge() { return itsAge; }
 
     int GetWeight() { return itsWeight; }
 
 
 
 private:
 
     int itsAge;
 
     int itsWeight;
 
 };
 
 
 
 SimpleCat::SimpleCat(int age, int weight)[COLOR=red]:[/COLOR]
 
[COLOR=red]itsAge(age), itsWeight(weight) [/COLOR]{}
 
 
 
 SimpleCat & TheFunction();
 
 
 
 int main()
 
 {
 
     SimpleCat & rCat = TheFunction();
 
     int age = rCat.GetAge();
 
     std::cout << "rCat is " << age << " years old!\n";
 
     std::cout << "&rCat: " << &rCat << std::endl;
 
     // How do you get rid of that memory?
 
     SimpleCat * pCat = &rCat;
 
     delete pCat;
 
     // Uh oh, rCat now refers to ??
 
     return 0;
 
 }
 
 
 
 SimpleCat &TheFunction()
 
 {
 
     SimpleCat * pFrisky = new SimpleCat(5,9);
 
     std::cout << "pFrisky: " << pFrisky << std::endl;
 
     return *pFrisky;
 
 }
Вопрос: что это за двоеточие (выделенное красным) и за текст перед пустым телом конструктора стоит? Где об этом почитать можно?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2008, 13:25
Ответы с готовыми решениями:

Вопрос по Char
Вот в чем суть я токо изучаю С++ токо неделю (самоучка по книге Шилдта) раньше програмировал на Паскале. Как я понял переменная типа Char...

Вопрос про char
Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать char a; char *c; char b=new...

_itoa,вопрос по char*
В MSDN описана функция char *_itoa( int value, char *str, int radix ); В примере

10
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
24.12.2008, 13:29
знаковость/незнаковость chara не оговаривается стандартом.У большинства компиляторов он по умолчанию знаковый. Этот флаг компиляторов меняется.Но делать этого не стоит - лучше использовать unsigned char, где нужна беззнаковость.

По поводу конструктора - читать в учебнике по теме наследования
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 5
24.12.2008, 13:38  [ТС]
Цитата Сообщение от XuTPbIu_MuHTAu Посмотреть сообщение
знаковость/незнаковость chara не оговаривается стандартом.У большинства компиляторов он по умолчанию знаковый. Этот флаг компиляторов меняется.Но делать этого не стоит - лучше использовать unsigned char, где нужна беззнаковость.

По поводу конструктора - читать в учебнике по теме наследования
по 1. - так как ты писал использовал unsigned char, но все-равно программа попадает в какой-то бесконечный цикл. Мне кажется, что есть какие-то ограничения по использованию. Буду очень благодарен знающим за краткий пример реально работающей такой программы.

по 2. Я догадываюсь, что там что-то связано с наследованием, но книги у меня 3 и ни в одной нету инфы по описаноому.
З.Ы. Как переопределить методы знаю, но тут выглядит как-то по другому.
0
Почетный модератор
 Аватар для Lord_Voodoo
8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.12.2008, 13:47
компилил code block:
Code Скопировано
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
int main()
{
 for(char a = -128; a < 127; a++)
   cout << a << endl;
 for(unsigned char a = 0; a < 255; a++)
   cout << a << endl;
 return 0;
}
проблема в том, что символов не 256, а 255 и по достижению 256 получаете 0 и так до бесконечности...
0
Эксперт С++
 Аватар для XuTPbIu_MuHTAu
2256 / 771 / 25
Регистрация: 27.05.2008
Сообщений: 1,496
24.12.2008, 13:50
WooDooMan, значений 256,просто нумеруются с нуля) поэтому 255 последнее
Cosolapiy,256,как следствие, не достигается
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 5
24.12.2008, 14:07  [ТС]
WooDooMan
XuTPbIu_MuHTAu
Спасибо.
Так как в асме и паскакале был гуру, то диапазоны знаю.
Согласен, но как мне тогда 255 символ вывести. Ведь цикл работает только до 254?

Добавлено через 6 минут 32 секунды
Что же это за звери (tsAge(age), itsWeight(weight) ) перед скобками {}?
Что это? Не выглядит как переопределение метода при наследовании...

SimpleCat::SimpleCat(int age, int weight):

itsAge(age), itsWeight(weight) {}
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.12.2008, 14:10
Почитай, пожалуйста, синтаксис С++. Это иницализация переменных переданными параметрами и пустое тело конструктора. Займись синтаксисисом!
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 5
24.12.2008, 14:28  [ТС]
Vourhey, прости чайнига, но в моих книгах нету, а найденные описания такие ньюансы не описывают.
Что что тело пустое я вижу. Я догадываюсь, что то инициализация, но
1) почему перед телом стоит??
2) itsAge, itsWeight - это же переменные, а не функции, а тут: itsAge(age), itsWeight(weight), выглядят как функции, и где же там тогда ретурн age и ретурн weight???

Или дайте ссылку на толковую литературу, чтобы вас не мучать.

Не бросайтесь камнями, ибо в отличие от вообще чайников в программировании, я чайник в с++ и из-за этого сраху вникаю в тонкости...

Спасибо.
0
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
24.12.2008, 14:40
Почему перед телом? А почему нет? Потому что это по правилам синтаксиса. Да не функции это. Это инициализация переменных(членов класса)...
Code Скопировано
1
Конструктор(бла-бла, трали-вали): переменная1(бла-бла), переменная2(трали-вали). . .
Восле чего переменная1 будет иметь значение "бла-бла" и т. д.

Ссылки не знаю. Найди в интернете Герберта Шилдта, или Бьерна Страуструпа. Читай.

Добавлено через 5 минут 17 секунд
Хорош на эту тему. А то уже оффтопим.
0
0 / 0 / 0
Регистрация: 24.12.2008
Сообщений: 5
24.12.2008, 14:44  [ТС]
Vourhey
спасибо огромнейшее!
0
Почетный модератор
 Аватар для Lord_Voodoo
8784 / 2537 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
24.12.2008, 15:55
XuTPbIu_MuHTAu, да торможу... просто никогда в голову не приходило мысли длЯ цикла использовать такой коварный тип как char или unsigned char...
Code Скопировано
1
2
3
4
5
6
 unsigned char a = 0;
 do{
   cout<<(int)a<<" "<< a << endl;
   if(a==255) break;
   a++;
 }while(true);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.12.2008, 15:55
Помогаю со студенческими работами здесь

Ошибка в конструкторах
Почему нельзя создать два конструктора? class Test { private List&lt;First&gt; first; private List&lt;Second&gt; second; private int...

Исключения в конструкторах
Для начала приведу код, а затем соответствующие вопросы. #include &lt;iostream&gt; #include &lt;stdexcept&gt; using namespace...

Немного жестокости, о классах и конструкторах
Доброго времени суток. Суть проблемы, у нас есть задача: добавить в класс конструктор по умолчанию, конструктор...

Исключения в конструкторах стандартных контейнеров
Очень тупой вопрос: могут ли перемещающие конструкторы std::map и std::vector выкинуть исключение? С одной стороны, ну чему там кидать...

О классах и конструкторах в Microsoft Visual С++.
Всем добрый день народ, есть задачи, которые надо решить Microsoft Visual С++. решение 1. /* Написать программу, в которой...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
Взаимодействие Python с REST API
py-thonny 27.03.2025
REST API - это архитектурный стиль взаимодействия компонентов распределённого приложения в сети. Python располагает функциональным набором инструментов для работы с REST API и основная библиотека для. . .
sshd restrictions, ssh access limitations
jigi33 26.03.2025
sshd restrictions | ssh access limitations рестрикции доступа на сервер sshd статья: https:/ / www. golinuxcloud. com/ restrict-allow-ssh-certain-users-groups-rhel
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер