Вы посмотрели проект Apache Felix? Это имеет целую путаницу плагинов, включая плагин пакета , который должен сделать то, что Вы хотите.
кроме того, Вы попробовали эти
тег с
? Это должно иметь желаемый эффект слияния пути к классу в Вашу декларацию.
org.apache.maven.plugins
maven-jar-plugin
...
true
src/main/resources/META-INF/MANIFEST.MF
...
Итак, вы знаете, что это правильно, вы сразу после «Голоса властей»?
Предотвращение случайного изменения временных конструкций очень ценно. В общем, вы должны объявить как можно больше вещей const
, это защитит вас от множества несчастных случаев и даст оптимизатору полезные советы.
У вас есть копия Скотта Мейерса "" Эффективный C ++ "вокруг?" Укажите им на пункт 3 (стр. 18 в третьем издании);)
Здесь приводится пример
class Rational {...};
const Rational operator* (const Rational& lhs, const Rational& rhs );
if( (a * b) = c ) // declaring operator *'s return value const causes error to be caught by compiler
Это тот случай, когда const
не добавляет никакого значения, но увеличивает код и заставляет читателя задуматься. Какой смысл в этой const
? Вызывающий может скопировать значение в некоторую неконстантную переменную и в любом случае делать с ней все, что захочет.
Обратите внимание, что if ((a * b) = c)
в любом случае не будет компилироваться для встроенных типов, поэтому здесь очень важно, говорим ли мы встроенные типы (в вашем вопросе задается bool
) или определяемые пользователем типы.
Для встроенных типов это вообще не имеет смысла, поэтому использовать его не следует. Что касается типов, определяемых пользователем, я нахожусь в лагере jalf: что, если вызывающий хочет изменить возвращаемый объект?
Я не уверен, что if ((a * b) = c)
- такой хороший аргумент для возврата константных пользовательских типов, поскольку я не могу вспомнить, когда в последний раз видел, как компилятор не предупреждает об этом .
Чтобы быть более конкретным, константными могут быть только «объекты». Стандартное определение «объекта» в C ++ включает все, на что ссылается lvalue («имеет имя»), и временные объекты типа класса. Логическое возвращаемое значение - это rvalue неклассового типа, поэтому в этом случае совместимый со стандартами компилятор просто проигнорирует "const". Как уже говорили другие, в данном контексте это бесполезно.
Когда вы возвращаете ссылку на переменную-член, имеет смысл сделать ее константой. Здесь вы возвращаете копию, поэтому в константе нет необходимости.
Модификатор const
используется только для возвращаемых типов, которые возвращаются по ссылке (либо как ссылка const SomeObject &
, либо через указатель const SomeObject *
), поэтому вызывающий не сможет изменить объект с помощью ссылки / указателя. Примитивные типы возвращаются значением , что означает, что вызывающий объект получает копию объекта, а не сам объект.
Следовательно, const
является не совсем подходит для типов возвращаемых значений. Поскольку копия находится вне контроля вызываемой функции, вызываемая функция не должна указывать вызывающей стороне, что ее нельзя изменить.
Это совершенно не имеет значения. Следовательно, консенсус состоит в том, чтобы вернуть только bool
.
Причина, по которой это не имеет значения, в том, что вы все равно не можете вызывать неконстантные функции-члены; bool
не является классом или структурой.
As bool копировать, то же самое, ставить const или нет. Кроме того, у вас могут возникнуть проблемы с компиляцией.
const bool func();
bool f = func();
0 ошибок, 0 предупреждений. Что вы сделали, кроме ненужной инфляции кода?
Константный тип возвращаемого значения
РЕЗЮМЕ:
Значение возвращаемого типа, которое объявленная const не может быть изменена. Эта особенно полезно при проведении ссылка на внутреннее устройство класса, но также может предотвратить более редкие ошибки.