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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
#1

Вопрос про catch и delete - C++

11.08.2011, 22:21. Просмотров 1236. Ответов 27
Метки нет (Все метки)

по какой причине данная операция совершается успешно?
ведь указатель равен 0.
Миниатюры
Вопрос про catch и delete  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2011, 22:21     Вопрос про catch и delete
Посмотрите здесь:

Расскажите про new и delete в C++ - C++
Есть несколько вопросов: 1) Можно ли перегрузить несколько операторов new в разных пространствах имен, а потом просто писать int *t =...

Вопрос про палиндромы - C++
Такая вот задачка по програмированию С++: Ввести рядок символов и составить масив слов-палиндромов (читаются одинаково с права на лево и...

Вопрос про Swich - C++
Пример: int i=2; switch (i) { case 1: i += 2; case 2: i *= 3; case 0: i /= 2; case 4: i -= 5; default: ; } Выполнение оператора...

Вопрос про friend - C++
Вот мой код. #include<iostream> using namespace std; class Bottle; class Carton { public: Carton(const Bottle& xBottle) {...

Вопрос про ф-ию mul - C++
Расскажите пожалуйста про ф-ию mul, перегружаемую в классе. Что она делает?

[C++] Вопрос про ввод - C++
#include <iostream.h> #include <stdio.h> void main() { char adress; char text; //FILE * fo;

Вопрос про указатели - C++
char *a = "s"; 1. Выделяется место в памяти 2. В это место записывается s 3. Указателю a приваивают адрес памяти где храниться s ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
12.08.2011, 15:07     Вопрос про catch и delete #21
Почему-то никто не написал, что для сравнение си-строк надо использовать стандартную strcmp. Посему спешу исправить это недоразумение))
P.S. Или я не заметил, и кто-то написал? Или автору не строки надо сравнивать? Что-то я запутался...
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
12.08.2011, 15:09     Вопрос про catch и delete #22
silent_1991, ну на это, как бы, намекали А Net_Wanderer использовал её в своём примере.
AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
12.08.2011, 15:16  [ТС]     Вопрос про catch и delete #23
grizlik78, спасибо. но рассмотри пожалуйста мой пример.
для сравнения строк надо конечно strcmp. Я так понимаю этот кусок моего кода это вообще пример того как НЕ надо делать

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
char* a = "BLACK";
char* b = "BLACK";
 
throw(a);
 
 
 
catch(char* K)
{
 
if(K=="BLACK")//здесь поясни плиз что происходит. пойман указатель а. но с чем он сравнивается?
{                  //что такое "BLACK"  в данном контексте? можно ли вообще так сравнивать?
                   //это я сравниваю указатель со строковым литералом? т.е. вообще ерунда //              
//получается? и результат неопределен? студия дала тру. но я так понимаю это случайность?
 
 
}
 
 
}
Добавлено через 3 минуты
что называется дал маху. хорошо есть опытные люди на форумах. а то так и думал бы я что все ок
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
12.08.2011, 15:17     Вопрос про catch и delete #24
Гарантировать true нельзя. Сравниваются здесь указатели. Компилятор встретив три раза "BLACK" вправе разместить эту константную строку в памяти только один раз. В этом случае значения a и b будут однинаковыми, а сравнение даст true. Но компилятор никто не заставляет экономить память и он может разместить эту строку в памяти 3 раза. Тогда значения a и b будут разными (то есть они указывают на одинаковые строки, но расположенные в разной области памяти). Сравнение в этом случае даст false.
silent_1991
12.08.2011, 15:22
  #25

Не по теме:

grizlik78, чорд, значит, всё-таки проглядел))

AzaKendler
214 / 116 / 9
Регистрация: 30.05.2011
Сообщений: 1,772
12.08.2011, 15:26  [ТС]     Вопрос про catch и delete #26
так будет правильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#define BLACK 1
#define RED 2
 
throw(BLACK);
 
 
catch(int a)
{
 
if(a==BLACK)
{
 
}
 
}
ну или как Валерий писал
ISergey
Maniac
Эксперт С++
1373 / 884 / 52
Регистрация: 02.01.2009
Сообщений: 2,653
Записей в блоге: 1
12.08.2011, 15:36     Вопрос про catch и delete #27
Если сильно охото строки, то
C++
1
2
3
std::string str("Hello");
 
if(str == "Hello") ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2011, 15:51     Вопрос про catch и delete
Еще ссылки по теме:

Вопрос про память... - C++
Вот скажите пожалуйста в чем разница между int *p = new int; *p = 10; и int n = 10; не могу понять )

Вопрос про наследование. - C++
Добрый день всем! Возможно ли создать производный класс в который будут помещены 2 объекта базового класса с возможностью...

Вопрос про std:: - C++
std::cout << "Hello, world!" << std::endl; а можно cout << "Hello, world!" <<endl; std пространство имен... где про это...

Вопрос про файлы - C++
где распологать текстовый файл, чтобы программа видела его сразу без прописания директории? пишу в VS

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


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

Или воспользуйтесь поиском по форуму:
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
12.08.2011, 15:51     Вопрос про catch и delete #28
Цитата Сообщение от AzaKendler Посмотреть сообщение
ну или как Валерий писал
Лучше так, это же C++ в нем макросы не преветствуются
Yandex
Объявления
12.08.2011, 15:51     Вопрос про catch и delete
Ответ Создать тему
Опции темы

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