Другие языки программирования и технологии
С++. Чем отличаются операторы (->*) и (.*), от (->)и (.), и почему у них разный приоритет? И ещё один вопросик внутри.
И ещё вопросик про название фирмы. Само слово Borland как-то переводится? Или вообще что оно означает?
Не правильно, Васильев Дмитрий!
чтобы применять .* и ->* нужно использовать указатель на метод класса и объект или указатель на объект. А простыми скобочками этого никак не добиться.
class foo
{
public:
void Method(int a)
{
printf("foo::Method(%d)\n", a);
}
};
void main()
{
// переменная (объект)
foo v;
// вызов метода объекта
v.Method(0);
// указатель на объект
foo *pv = &v;
// вызов метода объекта через указатель на объект
pv->Method(1);
// указатель на метод объекта
void (foo::*pm)(int) = &foo::Method;
// вызов метода объекта через указатель на метод
(v.*pm)(2);
// вызов метода объекта через указатель на объект и через указатель на метод
(pv->*pm)(3);
}
чтобы применять .* и ->* нужно использовать указатель на метод класса и объект или указатель на объект. А простыми скобочками этого никак не добиться.
class foo
{
public:
void Method(int a)
{
printf("foo::Method(%d)\n", a);
}
};
void main()
{
// переменная (объект)
foo v;
// вызов метода объекта
v.Method(0);
// указатель на объект
foo *pv = &v;
// вызов метода объекта через указатель на объект
pv->Method(1);
// указатель на метод объекта
void (foo::*pm)(int) = &foo::Method;
// вызов метода объекта через указатель на метод
(v.*pm)(2);
// вызов метода объекта через указатель на объект и через указатель на метод
(pv->*pm)(3);
}
а пример использования первых операторов кинуть можешь?
Ничего особо нового тут нет. На примерах:
v - переменные (не указатели)
p - указатели
vc = pa->*pb // В "C" будет vc = *(pa->pb)
vc = va.*pb // В "C" будет vc = *(va.pb)
vc = pa->vb
vc = va.vb
+
pc = pa->pb
pc = va.pb
pc = pa->&vb // Этого нет ! // В "C" будет pc = &(pa->vb)
pc = va.&vb // Этого нет ! // В "C" будет pc =&( va.vb)
// Приоритет повышается (возможно) из-за присутствия унарного орератора (& или *)
Borland - Оne who came from Borland (home farm), the name of several places in Scotland. (born+land)
v - переменные (не указатели)
p - указатели
vc = pa->*pb // В "C" будет vc = *(pa->pb)
vc = va.*pb // В "C" будет vc = *(va.pb)
vc = pa->vb
vc = va.vb
+
pc = pa->pb
pc = va.pb
pc = pa->&vb // Этого нет ! // В "C" будет pc = &(pa->vb)
pc = va.&vb // Этого нет ! // В "C" будет pc =&( va.vb)
// Приоритет повышается (возможно) из-за присутствия унарного орератора (& или *)
Borland - Оne who came from Borland (home farm), the name of several places in Scotland. (born+land)
Похожие вопросы
- Чем оператор . отличается от оператора ->?
- Что делает оператор p = a[ N>>1 ]; в C++?
- Почему css по-разному отображаются в разных браузерах? Особенно глючит Explorer. Он вообще этих стилей не видит
- Что означает в с++ ->? Допустим pv->d?
- Винда ХР SP2 и SP3. Что лучше и почему? Столкнулась с разными мнениями...
- Ребят почему когда я хочу форматировать жесткий диск пишет. См . Внутри
- Нужна критика. Работа внутри >>
- Особенности и недостатки в работе оператора cin>>
- Хочу стать программистом! Пожалуйста, ответьте на несколько вопросов (см. внутри-->>>>>>>
- Перемещение < div > средствами JavaScript (см. внутри)