Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на C / C++

Выпуск № 643
от 09.12.2004, 10:00

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 2074
Отправлено ответов: 3945
Активность: 190.2 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

CrackLab
Статус: Профессиональный
Общий рейтинг: 115.07
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 110.02
[Подробней >>]
Василевский Александр
Статус: Опытный
Общий рейтинг: 113.65
[Подробней >>]
 
DSota
Статус: Опытный
Общий рейтинг: 124.92
[Подробней >>]
andre
Статус: Профессиональный
Общий рейтинг: 113.76
URL: мой сайт правда старый не обновлял давно надо бы заняться да руки не доходя
Телефон: 972544517423
[Подробней >>]
Gibbel
Статус: Профессиональный
Общий рейтинг: 104.26
URL: Savage Metal Club - жизнь в стиле рок-н-ролл
Телефон: +7 901 710 3146
[Подробней >>]
 
Morgion
Статус: Опытный
Общий рейтинг: 105.58
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 2068. У меня проблема с указателями. С указателями на обычные функции проблем нет, но вот если функция явл... (ответов: 2)
Вопрос № 2069. здравствуйте! возник такой вопрос: чтобы выполнить какою-нибудь маломальски сложную операцию, наприм... (ответов: 4)
Вопрос № 2070. Получаю Вашу рассылку "RusFAQ.ru: Программирование на C / C++" сравнительно недавно, очень... (ответов: 2)
Вопрос № 2072. Я вот нашел программу на visual c++ 6.0. А мне нужна эта программа написанная только на обыкновенном... (ответов: 3)

Вопросов: 4, ответов: 11


 Вопрос № 2068

У меня проблема с указателями. С указателями на обычные функции проблем нет, но вот если функция является членом какого-то класса, то ничего не выходит. Ведь любая функция должна рзмещаться в памяти статически и иметь свой адресс, но как получить указатель на метод?
И еще вопрос. В каких случаях лучше объявлять объект динамически, а в каких - статически, и в чем собственно между ними разница?
Заранее спасибо.



Вопрос отправлен: 05.12.2004, 10:44
Отправитель: DeadlySin

[Следующий вопрос >>] [Список вопросов]

Отвечает CrackLab

Добрый день, DeadlySin!
Указатель на метод объявляется в такой форме:
typedef тип_возвращаемого_значения (имя_класса::*имя_типа_указателя_на_функцию_класса)(список типов аргументов);
имя_типа_указателя_на_функцию_класса имя_указателя = &имя_класса::имя_метода;
Например есть класс:
class MyClass
{
public:
void AnotherFunc() { AfxMessageBox("yo!"); };
};
И мы хотим получить указатель на функцию AnotherFunc() этого класса. Запишем:
typedef void (MyClass::*MyFunc)();
MyFunc pMyFunc = &MyClass::AnotherFunc;
И теперь самый "облом". Дело в том, что как вы должны знать, при вызове метода класса, ему скрыто передается указатель на объект этого класса (внутри класса мы имеем доступ к этому указтелю через this). И поэтому мы не можем теперь просто вызвать pMyFunc(); Потому что при этом не передается указатель на объект класса, этого объекта просто нет. Поэтому указателями на метод класса можно пользовать ся только при дополнительном указании объекта класса. Т.е. мы должны написать так:
MyClass yo; // Создаем объект класса
(yo.*pMyFunc)(); // Вызываем метод класса через указатель.
Удачи.

Ответ отправлен: 05.12.2004, 19:25
Отправитель: CrackLab


Отвечает vitya

п”пѕп±яЂя‹п№ пґпµпЅяЊ, DeadlySin!
яѓпєп°п·п°я‚пµп»яЊ пЅп° я‡п»пµпЅ я„яѓпЅпєя†пёяЋ пѕп±яЉяЏпІп»яЏпµя‚яЃяЏ:
typedef void (*MyClass::g)(int);
я‚пµпїпµяЂяЊ пјпѕп¶пЅпѕ пґпµп»п°я‚яЊ
g = &MyClass::somefunk; пЁпґпµ somfunk пІпѕп·яЂп°я‰п°пµя‚ пЅпёя‡я‚пѕ пё п±пµяЂпµя‚ пёпЅя‚.

Ответ отправлен: 05.12.2004, 16:51
Отправитель: vitya


 Вопрос № 2069

здравствуйте!
возник такой вопрос:
чтобы выполнить какою-нибудь маломальски сложную операцию, например считать символ (getchar()), надо подключать заголовочный файл.
я не пойму, а как же реализованны сами эти функции? или в Си есть встроенные функции (назовем их простейшими операциями, как например сложение)? а может они написанны на ассемблере?
спасибо



Вопрос отправлен: 05.12.2004, 12:17
Отправитель: очень хочу научиться

[Следующий вопрос >>] [Список вопросов]

Отвечает Василевский Александр

Здравствуйте, очень хочу научиться!
Сами функции реализованы в RTL (Run-Time Library). некоторые из них написаны на C, некоторые - на ассемблере.
Обычно с компиляторами поставляются исходники RTL. Если интересно - можно полазить там, но тексты там очень сложны для понимания.

Ответ отправлен: 06.12.2004, 10:50
Отправитель: Василевский Александр


Отвечает vitya

п”пѕп±яЂя‹п№ пґпµпЅяЊ, пѕя‡пµпЅяЊ я…пѕя‡яѓ пЅп°яѓя‡пёя‚яЊяЃяЏ!
пѕпЅпё яЂпµп°п»пёп·пѕпІп°пЅя‹ пІ пєпѕпЅя†пµ пєпѕпЅя†пѕпІ я‡пµяЂпµп· я„яѓпЅя†пєпёпё пѕпїпµяЂп°я†пёпѕпЅпЅпѕп№ яЃпёяЃя‚пµпјя‹.

Ответ отправлен: 05.12.2004, 16:52
Отправитель: vitya


Отвечает CrackLab

Добрый день, очень хочу научиться!
Эти функции реализовываются в .lib файлах, и те стандартные С функции которые вы используете в своей программе берутся из .lib файла и прилинковываются к вашей программе.
Написаны они смешанно на ассемблере и на том же С/С++.

Ответ отправлен: 05.12.2004, 17:16
Отправитель: CrackLab


Отвечает DSota

Добрый день, очень хочу научиться!
В заголовочном файле находяться только обьявления функций... А сами функции находятся в lib-файлах, они написаны на Си и ассемблере - можно установить их исходники и посмотреть... В большинстве эти библиотеки подключаються незаметно для пользователя, но нестандартные библиотеки нужно добавлять в проект вручную...

Ответ отправлен: 06.12.2004, 11:29
Отправитель: DSota


 Вопрос № 2070

Получаю Вашу рассылку "RusFAQ.ru: Программирование на C / C++" сравнительно недавно, очень полезная инфа, подскажите, как получить прошлые "архивные" выпуски рассылки.



Вопрос отправлен: 05.12.2004, 15:58
Отправитель: Олег (mp4u@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает andre

Приветствую Вас, Олег!
зайди на сайт и посмотри что может быть проще

Ответ отправлен: 07.12.2004, 09:53
Отправитель: andre


Отвечает Gibbel

Здравствуйте, Олег!
Скачать с Subscribe.ru.

Ответ отправлен: 06.12.2004, 10:45
Отправитель: Gibbel


 Вопрос № 2072

Я вот нашел программу на visual c++ 6.0. А мне нужна эта программа написанная только на обыкновенном С. Со всеми его puts, scanf, printf и т.д. Помогите пожалуйста перевести незнакомые функции...


Приложение:


Вопрос отправлен: 05.12.2004, 23:43
Отправитель: Sashok (sashok_m@tut.by)

[Следующий вопрос >>] [Список вопросов]

Отвечает DSota

Добрый день, Sashok!


Приложение:

Ответ отправлен: 06.12.2004, 11:07
Отправитель: DSota


Отвечает Morgion

Добрый день, Sashok!
cin меняй на scanf а cout на printf.
Пример:
int f;
cout<<"Hello world"<<" "<почти тоже, что и
int f
printf("%s%s%d","Hello world!"," ",f);

Ответ отправлен: 06.12.2004, 22:09
Отправитель: Morgion


Отвечает CrackLab

Здравствуйте, Sashok!
Уберите строку #include "stdafx.h" и выше void main() напишите "enum bool { false, true }" (без кавычек). И все будет работать.

Ответ отправлен: 06.12.2004, 00:42
Отправитель: CrackLab



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (25)
C / C++ (24)
Perl (7)
Builder / Delphi (20)
Pascal (21)
Basic / VBA (15)
Java / JavaScript (7)
PHP (20)
Криптография (10)
WinAPI (22)
Радиоэлектроника (17)
Пользователю
Windows 95/98/Me (39)
Windows NT/2000/XP (60)
"Железо" (39)
Поиск информации (24)
Администратору
Windows NT/2000/XP (41)
Linux / Unix (18)
Юристу
Гражданское право (11)
Семейное право (6)
Трудовое право (10)
КоАП (6)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Web-студия "Kalashnikoff.ru"


hotlog_js="1.0";hotlog_d=document; hotlog_n=navigator;hotlog_rn=Math.random(); hotlog_n_n=(hotlog_n.appName.substring(0,3)=="Mic")?0:1; hotlog_r=""+hotlog_rn+"&s=25513&im=127&r="+escape(hotlog_d.referrer)+"&pg="+ escape(window.location.href); hotlog_d.cookie="hotlog=1"; hotlog_r+="&c="+(hotlog_d.cookie?"Y":"N"); hotlog_d.cookie="hotlog=1; expires=Thu, 01-Jan-70 00:00:01 GMT" hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2";hotlog_s=screen; hotlog_r+="&wh="+hotlog_s.width+'x'+hotlog_s.height+"&px="+((hotlog_n_n==0)? hotlog_s.colorDepth:hotlog_s.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; hotlog_d.write("HotLog") Яндекс цитирования
© 2001-2004 Россия, Москва. Идея, дизайн, программирование: Калашников О.А. ICQ: 68951340
При перепечатке материалов ссылка на данный сайт обязательна!

http://subscribe.ru/
http://subscribe.ru/feedback/
Подписан адрес:
Код этой рассылки: comp.soft.prog.cplus
Отписаться

В избранное