Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2015, 17:00   #1
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию Выход обьекта за область видимости

Добрый день !
Подскажите пожалуйста , почему при выходе обьекта V за область видимости , но зная его адрес

Код:
A::K=&V;
можно вызывать методы класса Message и даже менять значение

в x ?

Код:
class Message
{
	int x;
public:
	Message()  {}
	Message(int a) : x(a) {cout<<"+++++++++"<<endl;}
	~Message()  {cout<<"-------------------"<<endl;}
	int func_1() {return x;}
	void func_2(int x) {Message::x=x;}
};

 class A
{
	public:
	static Message *K; 
};


Message *A :: K=NULL;

int main()
{
	{
		Message V(78);
		A::K=&V;
		cout<<"x = "<<V.func_1()<<endl;
	}
	A::K->func_2(5456);
	cout<<"*** x = "<<A::K->func_1()<<endl;
	return 0;
}
RAFA91 вне форума Ответить с цитированием
Старый 25.09.2015, 17:03   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Потому что это UB, достаточно спуститься с облаков на уровень пониже и всё станет ясно.
Croessmah вне форума Ответить с цитированием
Старый 25.09.2015, 17:04   #3
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Везение и ничего более.
pu4koff вне форума Ответить с цитированием
Старый 25.09.2015, 17:14   #4
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию



какая вероятность того , что к примеру обьект V и A имеют одинаковый адрес ?

Код:
{
		Message V;
}

Message A;
RAFA91 вне форума Ответить с цитированием
Старый 25.09.2015, 17:18   #5
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Огромная, ближе к 100%!
http://rextester.com/JLLA25055

Может поможет:
http://habrahabr.ru/company/smart_soft/blog/234239/

Последний раз редактировалось Croessmah; 25.09.2015 в 17:32.
Croessmah вне форума Ответить с цитированием
Старый 26.09.2015, 16:08   #6
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

а че токда в вижуале 8 эта вероятность стремится к нулю ?
RAFA91 вне форума Ответить с цитированием
Старый 26.09.2015, 16:32   #7
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

Цитата:
а че токда в вижуале 8 эта вероятность стремится к нулю ?
В Release компилировать пробовал?
Croessmah вне форума Ответить с цитированием
Старый 26.09.2015, 17:03   #8
RAFA91
Заблокирован
 
Регистрация: 06.02.2011
Сообщений: 1,999
По умолчанию

Цитата:
Сообщение от Croessmah Посмотреть сообщение
В Release компилировать пробовал?

нет , но зато это сделал в борланде 3.1
RAFA91 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Область видимости переменных prowoke Microsoft Office Excel 6 03.02.2012 22:00
Область видимости chertovich Общие вопросы Delphi 10 24.09.2011 03:21
область видимости Dimarik Общие вопросы .NET 5 21.02.2010 21:32
область видимости переменных. С++ Prestigio Помощь студентам 10 07.07.2008 15:55
область видимости ? artem779 Общие вопросы Delphi 3 14.09.2007 09:34