Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,560
1

Что такое область видимости объекта?

15.04.2017, 10:58. Показов 803. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день!
Подскажите, пожалуйста, на простом примере, что такое область видимости объекта. Я понимаю, что такое область видимости переменной. А что такое область видимости объекта?
Деструктор вызывается, когда локальный (автоматический) объект с областью видимости "блок" выходит за пределы области видимости. То есть, это когда метод класса данного объекта завершает работу?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.04.2017, 10:58
Ответы с готовыми решениями:

Область видимости анонимного объекта при вызове функции
Доброго дня. Хотел поинтересоваться: когда уничтожится анонимный объект, переданный как параметр...

Что такое конструктор по умолчанию? Как инициализируются данные-члены объекта?
Что такое конструктор по умолчанию? Как инициализируются элементы данных объекта, если класс...

Область видимости объекта
Собственно вопрос в следующем: как сделать объект dom созданный одним методом доступным в другом...

Область видимости объекта
Нужна теория об области видимости объекта

15
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
15.04.2017, 11:09 2
объект - та же переменная.
http://en.cppreference.com/w/cpp/language/object
http://en.cppreference.com/w/cpp/language/scope
0
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,560
15.04.2017, 13:54  [ТС] 3
Где в примере ниже область видимости объекта?
C++
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
#include<iostream>
#include<string>
using namespace std;
class data
{
private:
    char*ch;
public:
    
    data(char*ch2)
    {
        int x = strlen(ch2);
        ch = new char[x + 1];
        strcpy(ch,ch2);
    }
 
    ~data(){ cout << "The end!"; delete[]ch; }
    void g_out()
    {
        cout << ch;
 
    }
};
 
int main(){
 
    data s = "Hello World!";
    s.g_out();
    system("pause");
    return 0;
}
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.04.2017, 15:36 4
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
де в примере ниже область видимости объекта?
Функция main.
1
Велосипедист...
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
15.04.2017, 15:39 5
Цитата Сообщение от Fatmarmelad
Где в примере ниже область видимости объекта?
В пределах функции main.

Добавлено через 2 минуты

Не по теме:

IGPIGP, Опередили!!!
Прекрасен был тот день,
Когда зашел я в эту тему.
Решил помочь собрату,
Написал ответ… Но тут явились Вы!
Опередили нагло, не подозревая,
Что злобу буду я таить потом за этот грех…

1
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.04.2017, 15:46 6
Цитата Сообщение от IGPIGP Посмотреть сообщение
Функция main.
Я бы даже уточнил. Со строчки 27 по строчку 31. Потому что в строчке 26 (тоже часть функции main) он еще не виден.
3
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.04.2017, 15:49 7

Не по теме:

Цитата Сообщение от Captain Maxee Посмотреть сообщение
Прекрасен был тот день,
Когда зашел я в эту тему.
А я зла не держу. Тяжелое слишком. Я его сразу в торбу и в закрома.
***
Вот кто-то с области спустился,
Наверно мой объект идёть,
Над ём деструктор мрачно реёть,
Сичас иво ён заклюёть!



Добавлено через 2 минуты
Цитата Сообщение от Байт Посмотреть сообщение
Потому что в строчке 26 (тоже часть функции main) он еще не виден
Спорим?
Не. Он виден с момента объявления. Там даже кусок глобального пространства (до main), где он виден. И там его экземпляр можно объявить дажа.
ps я ещё не праздную.
0
Байт
15.04.2017, 15:49
  #8

Не по теме:

Captain Maxee, IGPIGP, Браво, Браво!:bravo::bravo:

0
Mournful Max
15.04.2017, 15:49
  #9

Не по теме:

IGPIGP, Ваши стихи бесподобны :p

0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.04.2017, 15:53 10
Цитата Сообщение от IGPIGP Посмотреть сообщение
Спорим?
Неа... Объект не виден. Виден класс. Это 2 большие разницы.
Пример. Тип int виден с первой строчки любого модуля. Но переменная int N видна только после объявления (до закрытия блока).
1
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,560
15.04.2017, 16:37  [ТС] 11
Цитата Сообщение от Байт Посмотреть сообщение
Объект не виден. Виден класс.
В смысле? То есть объекта нет в области видимости?
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.04.2017, 16:45 12
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
В смысле?
Разницу между Классом и Объектом знаете?
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.04.2017, 16:50 13
Цитата Сообщение от Байт Посмотреть сообщение
Неа... Объект не виден.
это правда. Нельзя увидеть того, чего ещё нет. Причинно следственные связи иначе не выдержат да и порвутся. Но строго говоря да. Если точно, то от объявления и до вызова деструктора. В данном случае случае пространственно временной континуум объединён фразой " от места возникновения до момента вызова деструктора". Это объединяет пространственные и временные условия существования. Хотя ряд методов можно вызвать и из деструктора. Например
C++
1
2
3
4
5
6
7
8
9
~data(){ 
cout << "The end!"; delete[]ch; 
g_out();//
}
    void g_out()
    {
        cout <<"О какой объект умирает во мне!"<<endl;
cin.get();//чтобы вконце насладиться вызовом деструктора воочию. 
    }
То есть, наверняка можно выпить за упокой, только после его завершения.


Добавлено через 4 минуты

Не по теме:

Цитата Сообщение от Captain Maxee Посмотреть сообщение
IGPIGP, Ваши стихи бесподобны
Да что Вы? Это просто слова. Я так целый день могу:

***
Вот кто-то с области спустился,
Наверно мой объект идёт,
На нём деструктор словно саван,
Его в могилу он сведёт...

2
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
15.04.2017, 16:54 14
Цитата Сообщение от IGPIGP Посмотреть сообщение
наверняка можно выпить за упокой, только после его завершения.
Да, конечно!
Цитата Сообщение от IGPIGP Посмотреть сообщение
ряд методов можно вызвать и из деструктора
Имхо, из деструктора можно вызывать все методы. Правда, тут у меня 100-процентной уверенности нет, я не эксперт по плюсам. Но во время работы деструктора объект класса жив. Еще память им занимаемая существует и доступна.
Статические методы класса можно вызывать и без всяких объектов, но это совсем другая песня.
0
34 / 10 / 2
Регистрация: 20.02.2016
Сообщений: 1,560
15.04.2017, 18:03  [ТС] 15
Цитата Сообщение от Байт Посмотреть сообщение
Классом и Объектом знаете?
В данном примере класс - data, объект - s. Где же начинается и заканчивается область видимости объекта?
0
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
15.04.2017, 21:14 16
Цитата Сообщение от Fatmarmelad Посмотреть сообщение
Где же начинается и заканчивается область видимости объекта?
с момента объявления до закрывающей скобки main (в Вашем коде).

Добавлено через 2 часа 58 минут
Цитата Сообщение от IGPIGP Посмотреть сообщение
до закрывающей скобки main
Надеюсь, Вы понимаете, что объект будет виден и после оператора return, но он будет недостижим там, о чём хороший компилятор выдаст соответствующее предупреждение.
1
15.04.2017, 21:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2017, 21:14
Помогаю со студенческими работами здесь

Что такое клиентская область?
Что такое клиентская область? Добавлено через 4 минуты Аа. Всё, вопрос неактуален.

Что такое область отсечения?
Здравствуйте, начал изучать OpenGL. Столкнулся с проблемой, я не понимаю, что такое область...

Что такое клиентская область?
Что такое клиентская область, которую можно получить используя GetClientRect? Заранее спасибо!

Что такое ускорение объекта
найти ускорение


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru