Bilmeniz için bir yolu yoktur. String
ile sıkı bir şekilde etkileşime giren ve harici bir arabelleğe işaret eden sabit bir dize oluşturan bir sınıf yazabilirsiniz (ilgili kurucuyu özel yaparak ve etkileşimli sınıfı yuvalanmış bir sınıf veya String
'un bir arkadaşını yaparak).
Endişelenmeniz gereken tek şey, potansiyel olarak küçük bir sabit dizede dinamik bellek yönetimi yapmaksa, Küçük Dize Optimizasyonunu (ayrıca Küçük Nesne/Arabellek Optimizasyonu) da uygulayabilirsiniz. Dize sınıfınızda gömülü bir arabelleğe sahip olmak ve her dizeyi bu arabelleğe önceden tanımlanmış bir boyuta kopyalamak ve dinamik olarak ayrılmış bir depolamaya daha geniş olan her dize (aynı teknik, küçük boyutlu işlev nesnelerini depolamak için boost::function
tarafından kullanılır) çalışır. .
class String {
union {
char *dynamicptr;
char buffer[16];
};
bool isDynamic;
};
tampon kendisine hatta gömülü dize uzunluğunun depolanması için (buffer[15]
ve benzeri hilelerinin olarak uzunluğunun depolanması için) için akıllı teknikler vardır.
Bilmenin bir yolu yok. Aslında, 'const' yalnızca nesne başlatıldıktan sonra (yapıcı bitirir) ve yıkıcı girildiğinde durur. – GManNickG