Pertanyaan yang diberi tag «c++»

C ++ adalah bahasa pemrograman untuk tujuan umum. Awalnya dirancang sebagai ekstensi ke C dan memiliki sintaksis yang sama, tetapi sekarang bahasa yang sama sekali berbeda. Gunakan tag ini untuk pertanyaan tentang kode yang akan dikompilasi dengan kompiler C ++. Gunakan tag khusus versi untuk pertanyaan yang berkaitan dengan revisi standar spesifik [C ++ 11], [C ++ 14], [C ++ 17] atau [C ++ 20], dll.

2
Apakah salin dan pindahkan konstruktor teman otomatis?
Kita dapat mengakses variabel pribadi dari kelas lain ketika kita mendefinisikan copy atau memindahkan konstruktor. Apakah C ++ membuat mereka friendsatu sama lain secara otomatis? Sebagai contoh: 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_ = …
14 c++  friend-class 

3
Mengapa dimensi array merupakan bagian dari tipenya?
Saat membaca buku C ++ Primer, saya menemukan pernyataan ini: "Jumlah elemen dalam array adalah bagian dari tipe array." Jadi saya ingin mencari tahu menggunakan kode berikut: #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 …
14 c++  arrays  c++11 

3
Apakah nama kelas yang sepenuhnya memenuhi syarat hingga lingkup global pernah diperlukan untuk definisi fungsi anggota out-of-line?
Pertanyaan ini membuat saya bertanya-tanya apakah pernah berguna / perlu untuk sepenuhnya memenuhi syarat nama kelas (termasuk operator lingkup global) dalam definisi fungsi anggota di luar kelas. Di satu sisi, saya belum pernah melihat ini dilakukan sebelumnya (dan sintaksis untuk melakukannya tampaknya tidak jelas). Di sisi lain, pencarian nama C …


2
Apakah GCC9 menghindari keadaan std :: varian yang tidak bernilai diizinkan?
Saya baru-baru ini mengikuti diskusi Reddit yang mengarah ke perbandingan yang bagus dari std::visitoptimasi di kompiler. Saya perhatikan hal berikut: https://godbolt.org/z/D2Q5ED Baik GCC9 dan Clang9 (saya kira mereka berbagi stdlib yang sama) tidak menghasilkan kode untuk memeriksa dan melempar pengecualian yang tidak bernilai ketika semua jenis memenuhi beberapa persyaratan. Ini …

1
Mengapa std :: swap tidak bekerja pada elemen vektor <bool> di bawah Dentang / Menang?
Saya punya kode seperti ini: #include &lt;vector&gt; #include &lt;utility&gt; int main() { std::vector&lt;bool&gt; vb{true, false}; std::swap(vb[0], vb[1]); } Argumen tentang kewarasan vector&lt;bool&gt;samping, ini bekerja dengan baik pada: Dentang untuk Mac Visual Studio untuk Windows GCC untuk Linux Kemudian saya mencoba membangunnya dengan Dentang pada Windows dan menerima kesalahan berikut (diringkas): …

1
Dapatkah std :: konstruktor rentang vektor meminta konversi eksplisit?
Apakah program berikut ini terbentuk dengan baik? #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()); } Menurut C ++ 17 [sequence.reqmts], persyaratan untuk X u(i, j); di mana Xadalah wadah urutan, adalah: Takan EmplaceConstructiblemenjadi Xdari …
14 c++  c++17 

2
Apa gunanya mengetahui apakah suatu objek adalah integral atau bukan atau merupakan tipe kelas atau tidak?
Halo Saya telah melihat banyak contoh seperti ini di Cppreference.com: std::is_class&lt;T&gt; std::is_integral Dan seterusnya. Saya tahu jika saya menjalankan kode misalnya saya dapatkan trueatau false. Tapi apa gunanya itu? misal mengetahui objek bertipe kelas atau tidak? #include &lt;iostream&gt; #include &lt;type_traits&gt; struct A {}; class B {}; enum class C {}; …
14 c++  templates 

3
Kelebihan fungsi lambda
Bagaimana cara membebani fungsi lambda lokal yang sederhana? SSE masalah asli: #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', …

3
Fungsi Templat tidak berfungsi untuk fungsi rujukan pointer-ke-anggota
Akhir-akhir ini saya menulis fungsi template untuk menyelesaikan beberapa pengulangan kode. Ini terlihat seperti ini: 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()); } } …
14 c++  templates 

3
std :: bit_cast dengan std :: array
Dalam ceramahnya yang baru-baru ini "Tipe punning in C ++ modern" Timur Doumler mengatakan bahwa std::bit_casttidak dapat digunakan untuk menggigit sebuah floatke dalam unsigned char[4]karena array gaya-C tidak dapat dikembalikan dari suatu fungsi. Kita harus menggunakan std::memcpyatau menunggu sampai C ++ 23 (atau lebih baru) ketika sesuatu seperti reinterpret_cast&lt;unsigned char*&gt;(&amp;f)[i]akan …

1
Bagaimana cara kerja implementasi c ++ nullptr?
Saya ingin tahu cara nullptrkerjanya. Standar N4659 dan N4849 mengatakan: harus memiliki tipe std::nullptr_t; Anda tidak dapat mengambil alamatnya; itu dapat langsung dikonversi ke pointer dan pointer ke anggota; sizeof(std::nullptr_t) == sizeof(void*); konversi menjadi booladalah false; nilainya dapat dikonversi ke tipe integral secara identik dengan (void*)0, tetapi tidak mundur; Jadi …

3
Salin Inisialisasi Daftar? Mengapa ini dikompilasi?
Saya menggunakan Microsoft Visual Studio Community 2019, V16.5.2. Saya ingin menguji inisialisasi daftar Silakan lihat program tes berikut: #include &lt;string&gt; void foo(std::string str) {} int main() { foo( {"str1", "str2"} ); return 0; } Ini mengkompilasi tanpa kesalahan dan peringatan. Mengapa? Ini memberikan kesalahan runtime: Expression: Transposed pointer range Adakah …
13 c++ 

1
std :: is_constructible mengembalikan nilai yang tidak konsisten untuk konstruktor pribadi
Apa aturan yang std::is_constructiblemenangani konstruktor pribadi? Diberikan kode berikut: #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(); } Cetakan ini 0( ideone ), yaitu, …
13 c++  typetraits 

1
Masalah penyusun C ++ dengan struct di kelas templat
Kode berikut tidak dikompilasi dengan gcc atau dentang. template&lt;class T&gt; class foo{}; template&lt;class T&gt; class template_class_with_struct { void my_method() { if(this-&gt;b.foo &lt; 1); }; struct bar { long foo; } b; }; Pesan kesalahan adalah error: type/value mismatch at argument 1 in template parameter list for 'template&lt;class T&gt; class foo' …

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.