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

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

Войти
Регистрация
Восстановить пароль
 
rigodigo
0 / 0 / 0
Регистрация: 08.10.2009
Сообщений: 5
#1

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

27.08.2011, 08:08. Просмотров 413. Ответов 7
Метки нет (Все метки)

Помогите пожалуйста! На форуме не нашёл ответа.. объясните следующую строку 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     Использование *&
Посмотрите здесь:

Синтаксис. Использование & - C++
Скажите, пожалуйста, чем отличается foo(std::string a); от этого foo(std::string& a); ?

Объясните почему не срабатывает И (&&) - C++
Есть задача нахождения наибольшего общего делителя для двух чисел. Программу я написал.Но почему когда я указывал в цикле И (&&), цикл...

Не работает gettimeofday(&tv1, &tz); - C++
#include <iostream> //#include <сtime> #include <time.h> #include <windows.h> #include <math.h> using namespace std; const...

Что это такое **&? - C++
Здравствуйте! как загуглить,

Оператор if и логическая операция И (AND) && - C++
Вод подскажите что будет быстрей обрабатываться процессором: if(!a&&!b) { a+b; } или

условие if (x && y && z ) - C++
День добрый. подскажите что не так: if(norcub() && nevk() && norok()) { cout<<"Условие не выполнено.\n"; count=30; } // эти 3...

Undefined reference to 'My_lab2::serialize_child(My_lab2::My_stack&,boost::interpro cess::file_lock&)') - C++
Компилирую test: g++ test.cpp -L. -lwrk -lboost_serialization -o programwrk -std=c++0x Так же компилирую libwrk до компиляции...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
rangerx
1932 / 1541 / 141
Регистрация: 31.05.2009
Сообщений: 2,909
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
Уничтожитель печенек
277 / 205 / 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
583 / 521 / 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     Использование *&
Еще ссылки по теме:

Ошибка [Linker error] undefined reference to `Triangulation::distPoints(tagPOINT&, tagPOINT&)' - C++
Добрый день, уважаемые форумчане есть функция которая считает площадь треугольника double Triangulation::squareTriang(POINT &amp;t1, POINT...

C++ 11 конструктор переноса && - C++
Кто-нибудь может мне пояснить или дать ссылку на информацию о rvalue reference на русском языке, а то на английском что-то не всё могу...

функции && строки - C++
ребята,пожалуйста,помогите.В понедельник практику сдавать,а эти задачи НЕМОГУ. 1. Написать процедуру для суммирования матриц. С ее...

FindFirstFile&&FindNextFile - C++
Работаю в Visual Studio 2010. Есть такой код: void print_diffs() { WIN32_FIND_DATA fd; HANDLE Handle; ...

С && C++ - это плохо? - C++
Большинство программистов говорят о том что С# и C++ мешать в одном коде не хорошо. Но что в этом такого плохого?


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

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

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