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

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

Войти
Регистрация
Восстановить пароль
 
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Можно ли к статическому объекту обратиться, как к обычному? - C++

25.11.2011, 10:46. Просмотров 836. Ответов 12
Метки нет (Все метки)

Можно ли к статическому объекту обратиться, как к обычному?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.11.2011, 10:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли к статическому объекту обратиться, как к обычному? (C++):

Как обратиться к объекту bitset так, чтобы результатом была битовая маска - C++
Здравствуйте, для образовательных целей решил научится работать с bitset, как я понял класс эмулирует массив с размером элемента 1 бит....

как задать значение статическому элементу класса - C++
В классе есть статический Private элемент, мне нужно создать статическую функцию которая будет перезаписывать значение этого элемента. Вот...

Можно ли обратиться к 3 элементу массива ? - C++
Если у нас есть int *x, y = { 1,2,3,4,5 }, можно ли обратиться к 3 элементу массива вот так? x=y; *(x+2) Думаю, что нет, так как не...

Можно ли обратиться к перекрытой глобальной переменной? - C++
int x; void f(int x); int main() { f(2); return 0; }; void f(int x) { x=x; // здесь я хочу скопировать праметр в...

Можно обратиться к локальной переменной из другой функции? - C++
Можно ли как-нибудь обратиться к локальной переменной из другой функции? Например: int PaPoRoTnik(){ extern int qq; int qq2=124;...

Можно ли присвоить объекту основного типа значение объекта пользовательского типа? - C++
Правильно ли я понимаю, что SomeClass obj; int x = obj; или SomeClass obj; int x = 5 + obj;

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:47 #2
эт как? пример кода приведи
а лучше скорми компилятору, он тебе и скажет можно или нельзя
0
res
56 / 9 / 1
Регистрация: 05.04.2010
Сообщений: 143
25.11.2011, 10:49 #3
taras atavin, А что такое "обычные объекты"?
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:51 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class SomeClass
{
    public:
    SomeClass(){}
    static void print_static()
    {
        cout<<"static print"<<endl;
    }
    void print()
    {
        cout<<"print"<<endl;
    }
 
};
 
int main (void)
{
    SomeClass *someClass = new SomeClass();
    someClass->print_static();
    SomeClass::print_static();
    return 0;
}
так штоли?
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 10:51  [ТС] #5
Кстати, как его можно определить? Метод вообще просто: "Методом называется подпрограмма-член класса". А как определить именно статический?
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 10:52 #6
так можно
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 10:55  [ТС] #7
Цитата Сообщение от oxotnik Посмотреть сообщение
а лучше скорми компилятору, он тебе и скажет можно или нельзя
C++
1
2
3
4
5
6
7
8
9
10
class TTest
{
 public:
 static void t()
 {
  
 }
};
TTest t;
t.t();
. Студия проглотила. Это нормально? И куда в этом случае передаётся this?

Добавлено через 1 минуту
Цитата Сообщение от oxotnik Посмотреть сообщение
так можно
В смысле? Каково определение именно статического метода.
0
oxotnik
1590 / 1067 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
25.11.2011, 11:06 #8
Цитата Сообщение от taras atavin Посмотреть сообщение
И куда в этом случае передаётся this?
если ты обратишься к this в теле статического метода, то компилятор сообщит тебе, что так нельзя делать (ибо this, на момент вызова статического метода может и не существовать), а в остальном это такой же метод как и другие, т.е. к нему через созданный объект класса можно обращаться
0
Сыроежка
Заблокирован
25.11.2011, 12:07 #9
Цитата Сообщение от taras atavin Посмотреть сообщение
Можно ли к статическому объекту обратиться, как к обычному?
Внутри определения класса или его членов вы можете непосредственно обращаться к статическому объекту по имени.
Вне определения класса (но также и внутри класса) вы можете обращаться к статическому имени используя синтаксиса квалифицированного имени. Наример, X::s.
Вы твкже можете обращаться к статическому члену класса, используя синтаксис доступа к члену класса через объект класса. В этом случае выражение , задающее объект класса, вычмсляется. Например,

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct X
{
   X & f() const { return ( *this ); }
   static int data;
};
 
int X::data = 10;
 
int main()
{
   X x;
   std::cout << "data = " << x.f().data << std::endl;
}
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 12:08  [ТС] #10
То есть это метод, не имеющий информации о том, через какой именно экземпляр своего класса он вызывается? Можно использовать эту фразу в качестве определения, или для определения она слишком корявая?
0
Сыроежка
Заблокирован
25.11.2011, 12:09 #11
taras atavin, Почитайте мой комментария. Я там все написал.

Что кассется функций, то статические функции -члены класса не имеют указатель this, они не могут виртуальными, и не могут иметь прототип, совпадающий с нестатической функцией-сленом класса.
0
taras atavin
Ушёл с форума.
3569 / 1753 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
25.11.2011, 12:41  [ТС] #12
Ну и очепятка! Методу, а не объекту.
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
25.11.2011, 20:10 #13
Цитата Сообщение от oxotnik Посмотреть сообщение
ибо this, на момент вызова статического метода может и не существовать
this не может существовать в определённый момент и не существовать в другой. this - это параметр любого не статического метода, который передаётся этому методу компилятором неявно при каждом вызове. Соответственно, в статических методах просто-напросто не определён скрытый параметр this, и потому доступа к нему нет.

Не по теме:

Возможно, я вас не так понял или вы не корректно выразились, поэтому решил прояснить.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.11.2011, 20:10
Привет! Вот еще темы с ответами:

Можно ли разбить строки на слова при strtok и обратиться к нужному слову? - C++
Вот предположим есть какой-то текст fdjgd f.df dfdgwe wek eu fkkkk Предположим мне нужно поработать только с каким-то...

Как можно обратиться к объекту - MS Access
ребят, подскажите) К объекту текущей формы можно обратиться ....(выбрать несколько ответов): .цена Dim rst as recordset . цена ...

Как можно из программы на VBA обратиться к объекту рисунок? - VBA
Здравствуйте! Подскажите, пожалуйста,как можно из программы на VBA обратиться к объекту рисунок (поменять его размер, свойства и пр.)? ...

Можно ли обратиться к объекту формы по имени в строковом виде - C#
Возник вопрос по поводу, возможно ли обратиться к объекту формы через переменную, так это бы существенно бы сократило код программы: ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.11.2011, 20:10
Ответ Создать тему
Опции темы

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