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

2 вопроса - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Синхронизация доступа http://www.cyberforum.ru/cpp-beginners/thread346539.html
Собственно есть массив структур. У данной структуры есть переменная, которая хранит состояние данной структуры(готова,не готова). В процессе работы приложение (многопоточное) циклично проверяет этот массив структур на готовность тех или иных структур, обращаясь к этой переменной каждой структуры, при этом такой опрос происходит в различных потоках программы. Значение переменной при опросе не...
C++ Односвязный список (задача) Задача в следующем есть код нужна переправить его таким образом чтобы программа удаляла заданный символ. Сейчас программа удаляет 3 первых символа. #include <iostream> using namespace std; struct Element { // Данные http://www.cyberforum.ru/cpp-beginners/thread346526.html
Цифровая подпись приложения C++
Здравствуйте. Когда запускаю приложение, антивирус ругается на отсутсвие цифровой подписи, и спрашивает разрешить запуск или нет. Вопрос. Как реализовать или встроить в свое приложение цифровую подпись? Чтобы ни один антивирус больше не ругался на отсутствие цифровой подписи в моем приложении..
C++ Проверьте пожалуйста. Правильно ли написано.
Программа работает как в задании. Но может есть ошибки? Подскажите. #include <iostream> #include <string> using namespace std; struct car { char name; int god;
C++ Ошибка strcat ...segmentation fault http://www.cyberforum.ru/cpp-beginners/thread346493.html
имеется функция показывает что segmentation fault(только в режиме дебага) в красных строках...а при компиляции ошибки не показывает...странно..подскажи ошибка в строке 32 и 43 void Fix_Grub(char *weight_and_hight){ // Правим Grub... FILE *f=fopen("/etc/default/grub","r"); if(!f) printf("Ошибка: fix grub 1"); fseek(f,0,SEEK_END); // Чтобы узнать кол-во символов...указатель в...
C++ алгоритмы хеширования может кто-нибудь подсказать, где можно почитать про хеширование и посмтотреть непосредственно реализации на С больше всего интересует хеш TTH, но можно и другие, желательно не сложные. Хотелось бы попробовать реализовать какой-нибудь. подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
30.08.2011, 19:49     2 вопроса
Цитата Сообщение от Lindemann66 Посмотреть сообщение
Всем привет!

У меня 2 глупых вопроса

1. Допустим, такой код
C++
1
2
3
int value() const {
    return m_nValue;
}
В чём смысл const?
Методы класса неявно получают в качестве первого параметра указательна объект класса. То есть первым неявным параметром является параметр T *, где T - это имя класса. То есть в общем случае фактически определение вашей функции без квалификатора const можно было бы записать так

C++
1
2
3
int value( T * ) {
    return m_nValue;
}
При вызове этой функции в качестве этого первого праметра передается указатель на объект, который назвали ключевым словом this.
Но при этом возникает вопрос: а как синтаксически указать, если мы хотим, чтобы this указывала на неизменяемый объект, то есть константный?

То есть если бы явно описывали указатель на объект в списке параметров метода, то вопрос стоит так, как сделать так, чтобы объявление метода было аналогично следующему объявлению

C++
1
2
3
int value( const T * ) {
    return m_nValue;
}
Обратите внимание, что на этот раз параметр имеет квалификатор const. Проблема заключается в том, что на самом деле в С++ указатель на объект явно не описывается в параметрах методов. Поэтому этот спецификатор перенесли после списка параметров метода

C++
1
2
3
int value( ) const {
    return m_nValue;
}
Но относится он к указателю на объект. То есть переданный неявно аргумент this будет иметь тип const T *, где T - это имя класса..

2. В чём разница между
C++
1
Pointer* p
и
C++
1
Pointer *p
?
То есть, где ставить * ?

Буду благодарен за любые ответы
Здесь разницы никакой нет. Но лучше пользоваться второй нотацией, так как возникает меньше путаницы (вам только надо было в примере написать не Pointer *p, а T *p, иначе ваша запись с Pointer можно трактовать как T **p).

Например,

C++
1
int *x, y;
Здесь x - это указатель на int, а y - это целочисленное значение.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru