Вы можете назначить объект const
отличному от const
объекту. Поскольку вы копируете и таким образом создаете новый объект, const
ness не нарушается.
Вот так:
int main() {
const int a = 3;
int b = a;
}
Это отличается , если вы хотите получить указатель или ссылку на оригинал, const
объект:
int main() {
const int a = 3;
int& b = a; // or int* b = &a;
}
// error: invalid initialization of reference of type 'int&' from
// expression of type 'const int'
Вы можете использовать const_cast
, чтобы взломать безопасность типов, если вам действительно нужно, но помните, что вы делаете именно это: избавление от безопасности типов. все еще не определено для изменения a
до b
в в приведенном ниже примере :
int main() {
const int a = 3;
int& b = const_cast<int&>(a);
b = 3;
}
Несмотря на то, что он компилируется без ошибок, может произойти все что угодно, включая открытие черной дыры или перевод всех ваших с трудом заработанных сбережений на мой банковский счет.
Если вы пришли к тому, что считаете необходимым для этого, я бы срочно пересмотрел ваш дизайн, потому что с ним что-то не так.