Bir nesneyi kopyalamak ne demektir? Nelerdir kopya yapıcı ve kopya atama operatörü ? Onları ne zaman kendim beyan etmeliyim? Nesnelerimin kopyalanmasını nasıl önleyebilirim?
Bu deyim nedir ve ne zaman kullanılmalıdır? Hangi sorunları çözüyor? C ++ 11 kullanıldığında deyim değişir mi? Her ne kadar birçok yerde bahsedilmiş olsa da, herhangi bir tek "ne" sorusu ve cevabı yoktu, işte burada. Daha önce bahsedildiği yerlerin kısmi bir listesi: En sevdiğiniz C ++ Kodlama Stili deyimleri nelerdir: …
Sınıfım var : class SymbolIndexer { protected: SymbolIndexer ( ) { } public: static inline SymbolIndexer & GetUniqueInstance ( ) { static SymbolIndexer uniqueinstance_ ; return uniqueinstance_ ; } }; Aşağıdaki gibi kodu devre dışı bırakmak için nasıl değiştirmeliyim: SymbolIndexer symbol_indexer_ = SymbolIndexer::GetUniqueInstance ( ); ve yalnızca aşağıdaki gibi kodlara …
Hafızamı, bir derleyicinin genellikle otomatik olarak varsayılan bir kurucu, kopyalama yapıcı ve atama operatörü oluşturduğu koşullar üzerine yenilemek istiyorum. Bazı kurallar olduğunu hatırlıyorum, ama hatırlamıyorum ve ayrıca çevrimiçi olarak saygın bir kaynak bulamıyorum. Biri yardım edebilir mi?
Bir kopya yapıcıdan beri MyClass(const MyClass&); ve bir = operatör aşırı yüklenmesi MyClass& operator = (const MyClass&); hemen hemen aynı koda, aynı parametreye sahip ve yalnızca dönüşte farklılık gösteriyorsa, her ikisinin de kullanması için ortak bir işleve sahip olmak mümkün müdür?
C ++ derleyicisinin bir sınıf için bir kopya yapıcısı oluşturduğunu biliyorum. Hangi durumda kullanıcı tanımlı bir kopya oluşturucu yazmamız gerekir? Bazı örnekler verebilir misiniz?
Bazı üyeleri başlatılmamış bir yapıyı kopyalamak geçerli mi? Tanımlanmamış bir davranış olduğundan şüpheleniyorum, ancak eğer öyleyse, başlatılmamış üyeleri bir yapıda (bu üyeler asla doğrudan kullanılmasa bile) bırakmayı oldukça tehlikeli hale getirir. Standartta buna izin veren bir şey olup olmadığını merak ediyorum. Örneğin, bu geçerli mi? struct Data { int a, …
Geçmişte, bir koleksiyonu güvenli bir şekilde kopyalamayı şöyle söyledim: public static void doThing(List<String> strs) { List<String> newStrs = new ArrayList<>(strs); veya public static void doThing(NavigableSet<String> strs) { NavigableSet<String> newStrs = new TreeSet<>(strs); Ancak bu "kopya" kurucuları, benzer statik oluşturma yöntemleri ve akışları gerçekten güvenli midir ve kurallar nerede belirtilmiştir? Güvenli …