Sabit c-dizelerini şu şekilde tanımlıyorum:C++ 'da sabit bir C-string tanımlamak için doğru yolu?
static char const* MY_CONSTANT = "Hello World";
Ancak işaretçisiconst
değildir. Aşağıdaki gibi yapmak daha uygun olmaz mıydı?
static char const* const MY_CONSTANT = "Hello World";
Bunun gibi sabit globals ile 2 gol vardır:
- dizesinin değiştirilmesine izin verme Değişkenin başka bir şeye işaret etmesine izin verme
Sabit dizeleri tanımlarken bu 2 hedefe ihtiyaç olduğunu varsaydım.
Başka bir ilginç şey şudur:
int main()
{
auto MY_CONSTANT = "";
MY_CONSTANT = "Another String";
}
Bu bana auto
dizesinin char const*
olarak değil char const* const
olarak çıkarılmasını söyler.
İki temel soru var:
- Sabit c stili dizeleri tanımlamak için en uygun yol hangisidir (Sanırım sabit bir işaretçi-bir şey, daha genel bir soru mu?). Neden birini veya diğerini seçiyorsun?
auto
ile olan örneğim ile ilgili olarak, nedenchar const*
'i seçtiğinin anlaşılması mantıklıdır (çünkü sabit olan veri dizisi, işaretçinin kendisi değil). Xzx46 içinauto
çıkarımı yapabilir miyim veya böyle bir türle sonuçlanacak şekilde kodu değiştirebilir miyim?
Eğer 'const char * const' olmasın? – Adam
@Adam Her iki form da geçerlidir C++. Seninki benimkiyle aynı. –
'auto' algıladığı varsayılan en küçük kısıtlamadır, yani değişkenin yeniden atanamaması sadece sizin seçiminizdir. Yapabilirsin, eğer istersen, ama herkese empoze etmemenin en iyisi. –