«c++» etiketlenmiş sorular

C ++ genel amaçlı bir programlama dilidir. Başlangıçta C'nin bir uzantısı olarak tasarlanmıştır ve benzer bir sözdizimine sahiptir, ancak şimdi tamamen farklı bir dildir. Bir C ++ derleyicisiyle derlenecek kod (sorulacak) ile ilgili sorular için bu etiketi kullanın. Belirli bir standart revizyon [C ++ 11], [C ++ 14], [C ++ 17] veya [C ++ 20] vb. İle ilgili sorular için sürüme özgü bir etiket kullanın.


2
ve hareket yapıcılar otomatik arkadaşlar nelerdir?
Kopyalama veya taşıma yapıcılarını tanımlarken başka bir sınıfın özel değişkenlerine erişebiliriz. C ++ onları friendotomatik olarak birbirlerine yapar mı ? Örneğin: my_str::my_str(my_str&& m) { size_ = m.size_; //accessing private variable another my_str class buff_ = m.buff_; //accessing private variable another my_str class m.buff_ = nullptr; m.size_ = 0; }
14 c++  friend-class 

3
Bir dizinin boyut türü neden türünün bir parçasıdır?
C ++ Primer kitabını okurken, şu ifadeyle karşılaştım: "Bir dizideki öğelerin sayısı dizinin türünün bir parçasıdır." Bu yüzden aşağıdaki kodu kullanarak öğrenmek istedim: #include<iostream> int main() { char Array1[]{'H', 'e', 'l', 'p'}; char Array2[]{'P', 'l', 'e', 'a', 's', 'e'}; std::cout<<typeid(Array1).name()<<std::endl; //prints A4_c std::cout<<typeid(Array2).name()<<std::endl; //prints A6_c return 0; } Ve ilginç …
14 c++  arrays  c++11 

3
Hat dışı üye işlev tanımları için tam kapsamlı bir sınıf adı hiç küresel kapsam gerektiriyor mu?
Bu soru, sınıf dışı üye işlev tanımında sınıf adlarının (genel kapsam operatörü dahil) tam olarak nitelendirilmesinin hiç yararlı / gerekli olup olmadığını merak etmemi sağladı. Bir yandan, bunu daha önce hiç görmedim (ve düzgün yapmak için sözdizimi belirsiz görünüyor). Öte yandan, C ++ ad araması çok önemsizdir, bu nedenle belki …


2
GCC9'ün std :: varyantının değersiz durumundan kaçınılması mümkün mü?
Son zamanlarda std::visit, derleyiciler arasında optimizasyonun güzel bir karşılaştırmasına yol açan bir Reddit tartışmasını izledim . Aşağıdakileri fark ettim: https://godbolt.org/z/D2Q5ED Hem GCC9 hem de Clang9 (sanırım aynı stdlib'i paylaşıyorlar), tüm türler bazı koşulları karşıladığında değersiz bir istisnayı kontrol etmek ve atmak için kod oluşturmazlar. Bu daha iyi kodgen yol açar, …

2
Bir nesnenin integral olup olmadığını veya sınıf tipi olup olmadığını bilmenin anlamı nedir?
Merhaba Cppreference.com'da böyle birçok örnek gördüm: std::is_class<T> std::is_integral Ve bunun gibi. Örneğin ben olsun trueveya kodu çalıştırmak olmadığını biliyorum false. Fakat bunun anlamı nedir? örneğin, nesnenin sınıf tipinde olup olmadığını bilmek? #include <iostream> #include <type_traits> struct A {}; class B {}; enum class C {}; int main() { std::cout << …
14 c++  templates 

1
Std :: swap neden Clang / Win altındaki vektör <bool> öğeleri üzerinde çalışmıyor?
Ben böyle bir kod var: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Bir vector&lt;bool&gt;yana akıl sağlığı ile ilgili tartışmalar, bu iyi çalışıyor: Mac için Clang Windows için Visual Studio Linux için GCC Sonra Windows üzerinde Clang ile inşa etmeyi denedim ve aşağıdaki hatayı aldım …

3
Lambda fonksiyonunu aşırı yükle
Basit bir yerel lambda işlevi nasıl aşırı yüklenir? Orijinal sorunun SSE'si: #include &lt;iostream&gt; #include &lt;map&gt; void read() { static std::string line; std::getline(std::cin, line); auto translate = [](int idx) { constexpr static int table[8]{ 7,6,5,4,3,2,1,0 }; return table[idx]; }; auto translate = [](char c) { std::map&lt;char, int&gt; table{ {'a', 0}, {'b', …

1
Std :: vector range constructor açık dönüşümleri çağırabilir mi?
Aşağıdaki program iyi biçimlendirilmiş mi? #include &lt;vector&gt; struct A { explicit A(int) {} }; int main() { std::vector&lt;int&gt; vi = {1, 2, 3, 4, 5}; std::vector&lt;A&gt; va(vi.begin(), vi.end()); } C ++ 17 [sıra.reqmts] 'ye göre, X u(i, j); Xbir dizi kabı nerede : Tolacaktır EmplaceConstructibleiçine Xgelen *i. Ancak, önceki paragrafta …
14 c++  c++17 

3
Const ref alan işaretçiden üyeye işlev için şablon işlevi çalışmıyor
Son zamanlarda bazı kod tekrarlarını çözmek için bir şablon fonksiyonu yazdım. Şöyle görünüyor: template&lt;class T, class R, class... Args&gt; R call_or_throw(const std::weak_ptr&lt;T&gt;&amp; ptr, const std::string&amp; error, R (T::*fun)(Args...), Args... args) { if (auto sp = ptr.lock()) { return std::invoke(fun, *sp, args...); } else { throw std::runtime_error(error.c_str()); } } int main() …
14 c++  templates 

3
std :: std :: dizi ile bit_cast
Yaptığı son konuşma ise “Modern C Tipi cinaslı ++” Timur Doumler söyledi o std::bit_castbit atmak kullanılamaz floatbir içine unsigned char[4]C tarzı diziler bir işlev döndürülen edilemez çünkü. std::memcpyC ++ 23 (veya üstü) gibi bir şey reinterpret_cast&lt;unsigned char*&gt;(&amp;f)[i]iyi tanımlanıncaya kadar kullanmalı veya beklemeliyiz . C ++ 20'de bir std::arrayile kullanabilir miyiz …

1
C ++ nullptr uygulaması nasıl çalışır?
Nasıl nullptrçalıştığını merak ediyorum . N4659 ve N4849 standartları şunları söylüyor: tipi olmalıdır std::nullptr_t; adresini alamazsın; doğrudan bir işaretçiye ve işaretçiye üyeye dönüştürülebilir; sizeof(std::nullptr_t) == sizeof(void*); için, dönüşüm boolIS false; değeri aynı şekilde integral tipe dönüştürülebilir (void*)0, ancak geriye doğru değil; Yani temelde aynı anlama sahip bir sabittir (void*)0, ancak …

3
Liste Başlatma Kopyalansın mı? Bu neden derleniyor?
Microsoft Visual Studio Community 2019, V16.5.2 kullanıyorum. Liste başlatmayı test etmek istiyorum Lütfen aşağıdaki test programına bakın: #include &lt;string&gt; void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Bu hata ve uyarı olmadan derlenir. Neden? Bir çalışma zamanı hatası verir: Expression: Transposed pointer range Birisi …
13 c++ 

1
std :: is_constructible özel kurucu için tutarsız değer döndürüyor
std::is_constructibleÖzel kurucuları idare etme kuralları nelerdir ? Aşağıdaki kod verildiğinde: #include &lt;iostream&gt; class Class { private: Class() { } }; template &lt;typename T&gt; class Test { public: static void test() { std::cout //&lt;&lt; std::is_constructible&lt;Class&gt;::value &lt;&lt; std::is_constructible&lt;T&gt;::value &lt;&lt; std::endl; } }; int main() { Test&lt;Class&gt;::test(); } Bu baskı 0( ideone ), …
13 c++  typetraits 

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.