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

Как запретить присваивание? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Виснет длл http://www.cyberforum.ru/cpp-beginners/thread602781.html
Всем привет. Сорри если не туда. Есть некая библиотека mouse.dll, которая имитирует человеческие движения, к библиотеке одновременно обращается несколько приложений. Так вот все правильно работает,...
C++ как удалить из строки пробелы либо массив char либо string как вам угодно помогите пожайлуста http://www.cyberforum.ru/cpp-beginners/thread602779.html
C++ Функция корректировки, не знаю как она объявляется и как ее написать
#include <fstream.h> #include <string.h> #include <conio.h> #include <iomanip.h> #include <stdlib.h> #include <io.h> #define FIO 20 #define DATA 6 #define PASPORT 10...
глюк с определениями C++
вот файл unit.h #ifndef __unit_h__ #define __unit_h__ const int MAXHELF=100; struct FPOINT { float x; float y; };
C++ Реализовать алгоритм работы с динамической структурой данных – однонаправленный список http://www.cyberforum.ru/cpp-beginners/thread602753.html
Нужно срочно решение задачки!! Помогите, кто может!!!! Реализовать алгоритм работы с динамической структурой данных – однонаправленный список: элементы добавляются и просматриваются с конца списка,...
C++ nullptr в codeblocks Поддерживается ли? Как подключить? подробнее

Показать сообщение отдельно
Bers
Заблокирован
11.06.2012, 16:05
Цитата Сообщение от taras atavin Посмотреть сообщение
Как лучше запретить присваивание? Заприватить оператор и не делать его реализацию? Или как?
Если объявить, но не определить - в любом случае operator= станет не доступным (ошибка компиляции, либо компоновки)

Но определять его приватным будет уже не обязательно по целому ряду причин:
1. Такую защиту легко обойти (особенно, если ты извращенец, который любит усложнять жизнь себе и другим)

2. То, чего быть не должно - не должно быть в принципе. Если присваивать нельзя, то и метод создавать не нужно. Ибо зачем?

3. В студии можно ничайно запустить приватный operator=
(только в некоторых случаях: Баг компилятора? Или я чего то не догоняю? )


Другой способ: объявить константный член данных. Константы должны быть инициализированы в момент создания. Компилятор уже не сумеет построить дефолтный operator=
Но от такой практики вреда больше, чем пользы.

Добавлено через 40 секунд
Цитата Сообщение от diagon Посмотреть сообщение
Унаследоваться от boost::noncopyable, как вариант.
Вы не путаете operator= и копирующий конструктор?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru