Форум программистов, компьютерный форум, киберфорум
Наши страницы

Что использовать с указателями? 0, NULL, nullptr? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Упрощение кода http://www.cyberforum.ru/cpp-beginners/thread638678.html
Можно ли как нибудь сократить или упростить код? cin>>answer; if ((answer!="y") && (answer!="n")) { while ((answer!="y") && (answer!="n")) { cout<<"Введите верное...
C++ Как создать полноценное приложение на WinApi с различными элементами (textbox.) подскажите книгу Как создать полноценное приложение на WinApi с различными элементами(checkbox, textbox, button и тд) и как обрабатывать события от них, подскажите книгу. http://www.cyberforum.ru/cpp-beginners/thread638675.html
Ошибка функции C++
Почему у меня при обработке наипростейшей функции появляется ошибка: 1>------ Построение начато: проект: Fun2, Конфигурация: Debug Win32 ------ 1>Компиляция... 1>Fun2.cpp...
добавление строчки в самое начало файла C++
Как программно добавить строчку в самое начало файла?
C++ Авто подключени файлов http://www.cyberforum.ru/cpp-beginners/thread638646.html
Как мне подключить в основному исполняемому файлу другие файлы (#include "file.h") из определенной папки?? Причем мне нужно чтобы они подключались автоматически независимо сколько их. Возможно...
C++ умножение #include "stdafx.h" #include "iostream" #include <time.h> using namespace std; #include <iomanip> int *vvod (int x, int y) { int *mas = NULL; подробнее

Показать сообщение отдельно
Nameless One
Эксперт С++
5775 / 3425 / 255
Регистрация: 08.02.2010
Сообщений: 7,448
19.08.2012, 17:28
Цитата Сообщение от Anuta21 Посмотреть сообщение
компилятор, конечно, предупредил, но позволил компилить
я к тому что, что надежнее не писать NULL, а использовать 0
Ну вот пара примеров из той же оперы

C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <cassert>
 
const int size = 5;
 
#define size 6
 
int main()
{
    assert(size == 5);
}
Константы ненадежны! Их значение можно изменить!

header.h:
C++
1
2
3
4
5
6
7
8
9
10
#ifndef HEADER_H
#define HEADER_H
 
class foo
{
private:
    int private_field;
};
 
#endif // HEADER_H
main.cc:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
 
#define private public
#include "header.h"
 
int main()
{
    foo f;
    f.private_field = 5;
    std::cout << f.private_field << std::endl;
}
Получается, что классы ненадежны, инкапсуляция нарушается! Нельзя иx использовать!

Так что (в отсутствие nullptr) использовать NULL в качестве «константы» нулевого указателя не менее надежно, чем использовать константы или классы

Добавлено через 3 минуты
Кстати, в отличие от твоего примера ни один из моих не выдал предупреждение ошибку, хотя они компилировались с ключами "-Werror -ansi -pedantic-errors"
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru