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

Использование *& - C++

Восстановить пароль Регистрация
 
rigodigo
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 5
27.08.2011, 08:08     Использование *& #1
Помогите пожалуйста! На форуме не нашёл ответа.. объясните следующую строку void func1(class1*&)

C++
1
2
3
4
5
6
class class2
{
class2();
~class2();
void func1(class1*&);//что означает class1*&
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2011, 08:08     Использование *&
Посмотрите здесь:

Проблема с проверкой условия цикла for( int i=2; !((n%i||d%i)&&!(n%i&&d%i))==0 ; i++) C++
В заштрихованную фигуру бросают точки с координатами x и y. Получить координаты первой точки не попавшей в эту область (фигура x*x+y*y<25&&x*x+y*y>=9& C++
C++ Почему friend ostrem& operator <<(ostream& outs, const Rational&); - invalid function declaration?
ostream &operator<< (ostream &output, const Array &obj) - что означает эта строка? C++
Выделение памяти для буффера, под std::istream& operator>>(std::istream &, String &) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
27.08.2011, 10:10     Использование *& #2
Это ссылка на указатель(reference-to-pointer)
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
32
33
34
35
36
37
38
#include <iostream>
 
class SomeClass
{
    public:
        int id_;
 
    public:
        SomeClass(int id)
            : id_(id)
        {
        }
 
        int id() const
        {
            return id_;
        }
};
 
void CreateNewSomeClassObj(SomeClass*& dest_ptr, int id)
{
    // работаем непосредственно с переданным указателем, а не его копией
    dest_ptr = new SomeClass(id);
}
 
int main()
{
    SomeClass* some_class;
    CreateNewSomeClassObj(some_class, 1);
    std::cout << some_class->id() << '\n';
    delete some_class;
 
    CreateNewSomeClassObj(some_class, 2);
    std::cout << some_class->id() << '\n';
    delete some_class;
 
    return 0;
}
Zverit
Уничтожитель печенек
 Аватар для Zverit
276 / 204 / 21
Регистрация: 07.02.2010
Сообщений: 723
27.08.2011, 10:10     Использование *& #3
Ссылка на указатель объекта класса
-=ЮрА=-
Заблокирован
Автор FAQ
27.08.2011, 10:23     Использование *& #4
Цитата Сообщение от rigodigo Посмотреть сообщение
void func1(class1*&);//что означает class1*&
В функцию передётся уазатель на адресс переменной принадлежащей class1, вобще для лучшего понимания лучше рассмотреть случай попроще, например:

C++
1
void func1(double &val);
означает что в функцию передаём ссылку на переменную val, указанная конструкция позволяет при изменении значения val внутри функции, изменить значение переменной и вне пределах функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
void func1(double &val);
{
    val += 3.5;
}
 
int main()
{
    double a = 0;
    func1(a);//аналогично а += 3.5;
    cout<<a;
    return 0;
}
Т.е передавая параметр по ссылке можем делать тип функции void и не писать вконце её тела return. Это может показаться не нужным, но иногда функция должна возвращать сразу несколько параметров, причём разнотипных, а вот вернуть return можно лишь 1-у переменную (1-н указатель на массив))

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool func1(double &val1, int &val2);
{
    bool ret = false;
    if((val = val1 / val2) < 2)
          ret = true;
    val2 = 1;
    return ret;
}
 
int main()
{
    double a = 3;int b = 2;
    bool c = func1(a,b);//а
    cout<<a<<" "<<b<<" "<< c ? 1 : 0<<"\r\n";
    //Вывод будет a = 1,5 b = 1, c = 1
    return 0;
}
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
27.08.2011, 14:11     Использование *& #5
я такое встречал когда необходимо выделить память данным переданным как параметр.. аналог **, только без разыменования
LosAngeles
Заблокирован
27.08.2011, 16:37     Использование *& #6
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
В функцию передётся уазатель на адресс
ссылка на указатель
rigodigo
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 5
27.08.2011, 19:56  [ТС]     Использование *& #7
спасибо большое за ответы, непонятно следующее, как она может использоваться, когда после &* ничего нет?
было бы
C++
1
void func1(class1*& b1);
я бы понял что потом можно использовать эту b1, а тут просто *&
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.08.2011, 20:02     Использование *&
Еще ссылки по теме:

C++ Синтаксис. Использование &
Как проверить, принадлежит ли символ заданному диапазону m...n, кроме if (c <= n && c >= m) ? C++
Friend ostream& operator<<(ostream& stream, CArr& obj); C++

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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
27.08.2011, 20:02     Использование *& #8
rigodigo, в прототипе функции аргументы можно не обзывать. В определении имя уже должно присутствовать (если аргумент используется в теле функции).
Yandex
Объявления
27.08.2011, 20:02     Использование *&
Ответ Создать тему
Опции темы

Текущее время: 03:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru