Функционально в Вашем примере, обе версии делают то же.
первое имеет преимущество, что это прозрачно на стороне вызова. Вообразите, как это искало бы оператор:
cin >> &x;
И как это выглядит ужасным для вызова подкачки
swap(&a, &b);
, Вы хотите подкачать a и b. И это выглядит намного лучше чем тогда, когда сначала необходимо взять адрес. Кстати, bjarne stroustrup пишет, что основная причина ссылок была прозрачностью, которая была добавлена в стороне вызова - специально для операторов. Также посмотрите, как больше не очевидно, добавил ли следующий
&a + 10
10 к содержанию a, назвав оператор + его, или добавляет ли это 10 к временному указателю, чтобы a. Добавить что к невозможности, что Вы не можете перегрузить операторы только для встроенных операндов (как указатель и целое число). Ссылки делают это совершенно прозрачным.
Указатели полезны, если Вы хотите быть в состоянии поместить "пустой указатель":
a1(0);
Тогда в a1 метод может сравнить указатель с 0 и видеть, указывает ли указатель на какой-либо объект.
После оценки всех ответов и работы с Eclipse я не вижу способа сделать это без ручного редактирования файла .classpath.
Пометка этого ответа как принятого означает, что нет возможности сделать это сделайте это в Eclipse 3.5. Держите пальцы скрещенными для Eclipse 3.6 или Eclipse 4.
Я думаю, вы можете сделать это графически вместо редактирования .classpath. В зависимости от версии Eclipse это примерно так:
Щелкните правой кнопкой мыши проект -> Свойства -> Путь сборки -> Библиотеки (вкладка) -> Добавить переменную
Работает в моем текущем Eclipse с проектом Java .. ; -)
Фактический способ сделать это - импортировать библиотеку в рабочее пространство, поэтому
щелкните правой кнопкой мыши в проводнике пакетов -> Импорт -> Файловая система -> Обзор (до каталога, содержащего ваш jars) -> установите флажки рядом с нужными jar-файлами -> Перейдите в папку рабочей области, в которую вы хотите импортировать (возможно, в папку lib) -> Готово
Имейте в виду, что при этом файлы будут скопированы в папку lib, поэтому Я обнаружил, что это помогает содержать вещи в чистоте, если их там еще нет. Теперь они будут отображаться в проводнике пакетов в разделе «lib». Чтобы добавить их в путь к классам,
щелкните правой кнопкой мыши проект -> Путь сборки -> настройте путь сборки ... -> Добавить файлы JAR -> перейдите к папке lib данного проекта и выберите соответствующие файлы JAR -> нажмите кнопку ОК - > click finish
Это добавит их к CP с относительными местоположениями.
Если вам нужна дополнительная помощь, дайте мне знать
Насколько я знаю, в настоящее время вы можете добиться этого только путем редактирования файла .classpath. Для того, чтобы это стало возможным с помощью простого нажатия кнопки, диалоговые окна обзора, появляющиеся после выбора «Добавить внешние JAR-файлы ...» и «Добавить папку внешнего класса ...», потребуют чего-то вроде флажка, чтобы указать, хотите ли вы добавить относительный или абсолютный путь. Может быть, это и нетрудно добавить, но я этого еще не видел.
Это не работает!
Редактировать .classpath для включения относительных путей в соответствии с примером «Новые и заслуживающие внимания» (path = "../../ lib / myjar.jar") несложно, однако, похоже, он работает не так, как описано!
Кажется, это разрешается относительно рабочей области, а не конкретного проекта, как указано, что не очень полезно. Кто-нибудь еще нашел ту же проблему или ее решение?
No. As of yet, it is not possible. But you will be seeing it soon. Keep checking the intergration builds.
Я сделал это, добавив библиотеки в свой проект. Итак, создайте в своем проекте папку под названием «jars» и поместите туда все зависимые jar-файлы.
Когда вы впоследствии настраиваете путь сборки, все будет относительным.