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

Отличие передачи по ссылке от передачи указателя ? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 5.00
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
19.01.2012, 01:02     Отличие передачи по ссылке от передачи указателя ? #1
Чем отличаюся следующие коды?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass{
    int val;
public:
    int get_val(){return val;}
    int set_val(int i){val=i;}
};
 
void display(MyClass &ob){
    cout << ob.get_val();
}
 
int main(){
    MyClass obj;
    
    obj.set_val(10);
    display(obj);
 
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass{
    int val;
public:
    int get_val(){return val;}
    int set_val(int i){val=i;}
};
 
void display(MyClass *ob){
    cout << ob -> get_val();
}
 
int main(){
    MyClass obj;
    
    obj.set_val(10);
    display(& obj);
 
    return 0;
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class MyClass{
    int val;
public:
    int get_val(){return val;}
    int set_val(int i){val=i;}
};
 
void display(MyClass *ob){
    cout << ob -> get_val();
}
 
int main(){
    MyClass obj,*p=&obj;
    
    obj.set_val(10);
    display(p);
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.01.2012, 01:10     Отличие передачи по ссылке от передачи указателя ? #2
Цитата Сообщение от ogcjm124 Посмотреть сообщение
Отличие передачи по ссылке от передачи указателя ?
Во втором случае нужно передавать адрес. И ссылка, в отличие от указателя не разыменовывается.
Цитата Сообщение от ogcjm124 Посмотреть сообщение
Чем отличаюся следующие коды?
В первом передача по ссылке, в остальных по указателю. В последнем еще создается указатель на MyClass.
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
19.01.2012, 01:20  [ТС]     Отличие передачи по ссылке от передачи указателя ? #3
Правильно ли я понимаю, что передача по ссылке и передача указателя в обоих случаях отличаются лишь формально.Ведь во всех случаях результатом передачи является передача адреса.Во всём остальном всё происходит абсолютно одинаково,так ли это (не вызывается контсруктор копий и т.п.)?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.01.2012, 01:29     Отличие передачи по ссылке от передачи указателя ? #4
Да. Ссылка это тот же указатель. Но она всегда указывает на определенный участок пямяти. И автоматически разыменовывается при обращении.
Если интересно, можете перегнать
этот
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <string>
 
void func(int& a)
{
    a = 5;
}
 
int main()
{
    int a = 4;
    func(a);
}
код в ассемблер. Сначала с cсылками, потом с указателями. И сравните.
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
19.01.2012, 01:38  [ТС]     Отличие передачи по ссылке от передачи указателя ? #5
Я пока не знаком с ассемблером.Так что вы скажите отличается если да то чем?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
19.01.2012, 01:45     Отличие передачи по ссылке от передачи указателя ? #6
Абсолютно идентичны.
Yandex
Объявления
19.01.2012, 01:45     Отличие передачи по ссылке от передачи указателя ?
Ответ Создать тему
Опции темы

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