28.08.2003, 17:19 | #1 |
Участник
|
Что передается функциям, ссылки или значения?
Подскажите пожалста, когда в функцию передается значение, а когда ссылка на него. В плохой документации ничего про это не нашел, а хорошей не имеем. Знающие люди сказали, что ссылок в аксапте нет вообще.
Однако, если в функцию (типа void) передается класс, а в теле этой функции меняется переменная этого класса, то после завершения функции получаем измененный объект. Так же все работает при операции присваивания. предположительно, объекты классов и таблиц - передаются (и присваиваются) по ссылке, а вот переменные основных типов - по значению. А вот и пример: X++: //Тестовый класс class TestClass { int a; } int fa(int _a = a) { a = _a; return a; } static void incA(TestClass _nts) { _nts.fa(_nts.fa()+1); } //Метод любого другого класса, ходим тут дебагером и смотрим. void run() { TestClass NTK1, NTK2; ; NTK1 = new TestClass(); NTK1.fa(5); TestClass::incA(NTK1); //Тут NTK1 уже равен 6... NTK2 = NTK1; //Тут они оба равны 6. TestClass::incA(NTK2); //А тут равны 7. Оба!!! ; } |
|
28.08.2003, 17:51 | #2 |
Banned
|
Re: Что передается функциям, ссылки или значения?
Цитата:
предположительно, объекты классов и таблиц - передаются (и присваиваются) по ссылке, а вот переменные основных типов - по значению
|
|
28.08.2003, 18:15 | #3 |
Участник
|
Спасибо.
Тоскливо оттого, что это не общеизвестный факт... |
|
28.08.2003, 19:59 | #4 |
Участник
|
Почему "не общеизвестный"?
http://www.yoda.arachsys.com/java/passing.html или сделайте самостоятельный поиск http://www.google.com.ru/search?hl=r...ence+value&lr= |
|
28.08.2003, 20:04 | #5 |
Участник
|
Сделаю цитату
Цитата:
Myth: "Objects are passed by reference, primitives are passed by value"
Truth #1: Everything in Java is passed by value. Objects, however, are never passed at all. Truth #2: The values of variables are always primitives or references, never objects. Цитата:
Часто некоторые на форумах повторяют миф:
Миф: Объекты передаются по ссылке, а примитивы по значению. ... Истина же...: Истина 1: Всё в Java передается по значению. Объекты, же, вообще никогда не передаются Истина 2: Значениями переменных могут быть только примитивы или ссылки, но не объекты. |
|
Теги |
передача параметров, ссылочная переменная |
|
|