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 aman untuk memanggil penempatan baru pada `ini` untuk objek sepele?
Saya tahu bahwa pertanyaan ini sudah ditanyakan beberapa kali tetapi saya tidak dapat menemukan jawaban untuk kasus khusus ini. Katakanlah saya memiliki kelas sepele yang tidak memiliki sumber daya apa pun dan memiliki destruktor kosong dan konstruktor default. Ini memiliki beberapa variabel anggota dengan inisialisasi di dalam kelas; tidak satu …

2
int numeral -> aturan konversi pointer
Pertimbangkan kode berikut. void f(double p) {} void f(double* p) {} int main() { f(1-1); return 0; } MSVC 2017 tidak mengkompilasi itu. Itu angka ada panggilan ambigu yang berlebihan, seperti 1-1yang sama 0dan karena itu dapat dikonversi menjadi double*. Trik lain, seperti 0x0, 0L, atau static_cast<int>(0), tidak bekerja baik. …
19 c++  visual-c++  types 

3
Perilaku yang tidak terdefinisi dalam vektor pemeran vektor
Mengapa kode ini menulis sejumlah bilangan bulat yang tampaknya tidak diinisialisasi? #include <iostream> #include <vector> using namespace std; int main() { for (int i : vector<vector<int>>{{77, 777, 7777}}[0]) cout << i << ' '; } Saya mengharapkan hasilnya 77 777 7777. Apakah kode ini seharusnya tidak terdefinisi?
19 c++ 

3
c ++ Utas di dalam untuk loop mencetak nilai yang salah
Saya mencoba memahami Multi-threading di c ++, tapi saya terjebak dalam masalah ini: jika saya meluncurkan utas dalam untuk loop mereka mencetak nilai yang salah. Ini kodenya: #include <iostream> #include <list> #include <thread> void print_id(int id){ printf("Hello from thread %d\n", id); } int main() { int n=5; std::list<std::thread> threads={}; for(int …


1
Mengapa std :: konstruktor atom berperilaku berbeda di C ++ 14 dan C ++ 17
Saya sedang mengerjakan proyek dengan C ++ 11 dan saya mencoba kode berikut #include <atomic> struct A { std::atomic_int idx = 1; }; int main() { return 0; } Saya mendapatkan kesalahan kompilator error: use of deleted function 'std::__atomic_base<_IntTp>::__atomic_base(const std::__atomic_base<_IntTp>&) [with _ITp = int]' std::atomic_int idx = 1; ^ Hasil …
19 c++  c++14  c++17  stdatomic 


2
Mengapa konsep same_as memeriksa jenis persamaan dua kali?
Melihat kemungkinan implementasi konsep same_as di https://en.cppreference.com/w/cpp/concepts/same_as saya perhatikan ada sesuatu yang aneh sedang terjadi. namespace detail { template< class T, class U > concept SameHelper = std::is_same_v<T, U>; } template< class T, class U > concept same_as = detail::SameHelper<T, U> && detail::SameHelper<U, T>; Pertanyaan pertama adalah mengapa sebuah SameHelperkonsep …
19 c++  c++20  concept 

5
Cara mengatasi const ref yang menggantung
Berikut program singkatnya #include <vector> #include <iostream> std::vector<int> someNums() { return {3, 5, 7, 11}; } class Woop { public: Woop(const std::vector<int>& nums) : numbers(nums) {} void report() { for (int i : numbers) std::cout << i << ' '; std::cout << '\n'; } private: const std::vector<int>& numbers; }; int …
18 c++ 


3
Nilai penutupan Lambda dapat dilewatkan sebagai parameter referensi nilai ulang
Saya menemukan bahwa lvaluepenutupan lambda selalu dapat dilewati sebagai rvalueparameter fungsi. Lihat demonstrasi sederhana berikut. #include <iostream> #include <functional> using namespace std; void foo(std::function<void()>&& t) { } int main() { // Case 1: passing a `lvalue` closure auto fn1 = []{}; foo(fn1); // works // Case 2: passing a `lvalue` …


4
Continuous enum C ++ 11
Apakah ada cara untuk memeriksa C ++ 11 jika enum kontinu ? Ini sepenuhnya valid untuk memberikan nilai enum yang bukan. Apakah mungkin ada fitur seperti jenis sifat di C ++ 14, C ++ 17 atau mungkin C ++ 20 untuk memeriksa apakah enum kontinu? Ini untuk digunakan dalam static_assert. …
17 c++  c++11  c++14  c++17  c++20 

2
Apakah melompati inisialisasi variabel tidak terbentuk atau apakah itu menyebabkan perilaku yang tidak terdefinisi?
Pertimbangkan kode ini: void foo() { goto bar; int x = 0; bar: ; } GCC dan Dentang menolaknya , karena lompatan untuk bar:mem - bypass inisialisasi variabel. MSVC tidak mengeluh sama sekali (kecuali menggunakan xsetelah bar:menyebabkan peringatan). Kita dapat melakukan hal serupa dengan switch: void foo() { switch (0) …


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.