คำถามติดแท็ก c++

C ++ เป็นภาษาโปรแกรมทั่วไป เดิมได้รับการออกแบบให้เป็นส่วนขยายของ C และมีไวยากรณ์ที่คล้ายกัน แต่ตอนนี้มันเป็นภาษาที่แตกต่างอย่างสิ้นเชิง ใช้แท็กนี้สำหรับคำถามเกี่ยวกับรหัส (จะ) คอมไพล์ด้วยคอมไพเลอร์ C ++ ใช้แท็กเฉพาะรุ่นสำหรับคำถามที่เกี่ยวข้องกับการแก้ไขมาตรฐานเฉพาะ [C ++ 11], [C ++ 14], [C ++ 17] หรือ [C ++ 20] เป็นต้น

28
อะไรคืออุปสรรคในการทำความเข้าใจพอยน์เตอร์และสิ่งที่สามารถทำได้เพื่อเอาชนะพวกเขา? [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เหตุใดพอยน์เตอร์จึงเป็นปัจจัยนำของความสับสนสำหรับนักเรียนระดับใหม่และเก่าที่ยังไม่จบการศึกษาในระดับ C หรือ C ++ มีเครื่องมือหรือกระบวนการคิดที่ช่วยให้คุณเข้าใจว่าพอยน์เตอร์ทำงานอย่างไรกับตัวแปรฟังก์ชันและเกินระดับ? มีวิธีปฏิบัติที่ดีอะไรบ้างที่สามารถทำได้เพื่อนำคนไปสู่ระดับ "Ah-hah ฉันเข้าใจแล้ว" โดยไม่ทำให้พวกเขาจมอยู่กับแนวคิดโดยรวม โดยทั่วไปการฝึกซ้อมอย่างสถานการณ์
449 c++  c  pointers 


5
อะไรคือความแตกต่างระหว่าง“ STL” และ“ ไลบรารีมาตรฐาน C ++”?
มีคนนำบทความนี้ไปสู่ความสนใจของฉันที่อ้างว่า(ฉันถอดความ)คำ STL ถูกนำไปใช้ในทางที่ผิดเพื่ออ้างถึงทั้งห้องสมุดมาตรฐาน C ++ แทนส่วนที่นำมาจาก SGI STL (... ) มันหมายถึง "STL" แม้จะมีคนเพียงไม่กี่คนที่ยังใช้ STL (ซึ่งได้รับการออกแบบที่ SGI) บางส่วนของ C ++ Standard Library นั้นขึ้นอยู่กับส่วนของ STL และเป็นส่วนเหล่านี้ที่หลายคน (รวมถึงผู้แต่งหลายคนและ cplusplus.com ซึ่งมีข้อผิดพลาดอย่างฉาวโฉ่ยังคงเรียกว่า "the STL" อย่างไรก็ตามนี่ไม่ถูกต้อง จริง ๆ แล้วมาตรฐาน C ++ ไม่เคยกล่าวถึง "STL" และมีความแตกต่างของเนื้อหาระหว่างทั้งสอง (... ) "STL" ไม่ค่อยถูกใช้เพื่ออ้างถึงบิตของ stdlib ที่เกิดขึ้นกับ SGI STL ผู้คนคิดว่ามันเป็นห้องสมุดมาตรฐานทั้งหมด มันได้รับการใส่ CV และมันก็ทำให้เข้าใจผิด …

6
เหตุใด GCC จึงสร้างรหัสเร็วขึ้น 15-20% หากฉันปรับขนาดให้เหมาะสมแทนความเร็ว
ฉันสังเกตเห็นครั้งแรกในปี 2009 ว่า GCC (อย่างน้อยในโครงการของฉันและในเครื่องของฉัน) มีแนวโน้มที่จะสร้างรหัสที่เร็วขึ้นอย่างเห็นได้ชัดถ้าฉันปรับขนาด ( -Os) แทนความเร็ว ( -O2หรือ-O3) และฉันสงสัยตั้งแต่นั้นมา ฉันมีการจัดการเพื่อสร้างรหัส (ค่อนข้างโง่) ที่แสดงพฤติกรรมที่น่าแปลกใจนี้และมีขนาดเล็กพอที่จะโพสต์ที่นี่ const int LOOP_BOUND = 200000000; __attribute__((noinline)) static int add(const int& x, const int& y) { return x + y; } __attribute__((noinline)) static int work(int xval, int yval) { int sum(0); for (int i=0; i<LOOP_BOUND; ++i) …

11
สตริงคงที่คงที่ (สมาชิกคลาส)
ฉันต้องการให้ค่าคงที่ส่วนตัวสำหรับคลาส (ในกรณีนี้คือโรงงานที่มีรูปร่าง) ฉันอยากได้ของบางอย่าง class A { private: static const string RECTANGLE = "rectangle"; } น่าเสียดายที่ฉันได้รับข้อผิดพลาดทุกประเภทจากคอมไพเลอร์ C ++ (g ++) เช่น: ISO C ++ ห้ามการเริ่มต้นของสมาชิก 'RECTANGLE' การเตรียมใช้งานในคลาสที่ไม่ถูกต้องของข้อมูลสมาชิกแบบคงที่ของประเภทไม่ครบถ้วน 'std :: string' ข้อผิดพลาด: การทำให้ 'RECTANGLE' เป็นแบบคงที่ สิ่งนี้บอกฉันว่าการออกแบบสมาชิกประเภทนี้ไม่เป็นไปตามมาตรฐาน คุณมีค่าคงที่ตัวอักษรส่วนตัว (หรืออาจเป็นแบบสาธารณะ) ได้อย่างไรโดยไม่ต้องใช้ #define directive (ฉันต้องการหลีกเลี่ยงความน่าเกลียดของข้อมูลข้อมูล!) ความช่วยเหลือใด ๆ ที่ชื่นชม
445 c++  string  class  static  const 

14
เราสามารถมีพอยน์เตอร์ได้กี่ระดับ
จำนวนพอยน์เตอร์ ( *) ที่อนุญาตให้มีในตัวแปรเดียว ลองพิจารณาตัวอย่างต่อไปนี้ int a = 10; int *p = &a; ในทำนองเดียวกันเราสามารถมี int **q = &p; int ***r = &q; และอื่น ๆ ตัวอย่างเช่น, int ****************zz;

13
usr / bin / ld: ไม่พบ -l <nameOfTheLibrary>
ฉันพยายามรวบรวมโปรแกรมของฉันและมันคืนข้อผิดพลาดนี้: usr/bin/ld: cannot find -l&lt;nameOfTheLibrary&gt; ใน makefile ของฉันฉันใช้คำสั่งg++และลิงก์ไปยังไลบรารีของฉันซึ่งเป็นลิงก์สัญลักษณ์ไปยังไลบรารีของฉันซึ่งอยู่ในไดเรกทอรีอื่น มีตัวเลือกให้เพิ่มเพื่อใช้งานได้ไหม?
443 c++  linux  g++ 

12
GUI GUI ของ Linux คืออะไร
ฉันหวังว่านี่จะไม่เป็นคำถามที่โง่ แต่ก็เป็นสิ่งที่ฉันสงสัยเสมอ ทั้ง Windows (Win32 API) และ OS X (Cocoa) มี API ของตัวเองเพื่อจัดการ windows เหตุการณ์และระบบปฏิบัติการอื่น ๆ ฉันไม่เคยได้รับคำตอบที่ชัดเจนเลยว่าเทียบเท่ากับ Linux หรือเปล่า ฉันเคยได้ยินบางคนพูดว่า GTK + แต่ GTK + เป็นแพลตฟอร์มข้ามมันเป็นพื้นเมืองได้อย่างไร
441 c++  c  linux  api  user-interface 

30
อะไรคือความแตกต่างระหว่าง struct และ class ใน C ++?
คำถามนี้ถูกถามอยู่แล้วในบริบทของ C ตอนนี้ฉันต้องการเรียนรู้ความแตกต่างระหว่าง struct และคลาสใน C ++ โปรดอภิปรายเกี่ยวกับความแตกต่างทางเทคนิครวมถึงเหตุผลในการเลือกอย่างใดอย่างหนึ่งในการออกแบบ OO ฉันจะเริ่มต้นด้วยความแตกต่างที่ชัดเจน: หากคุณไม่ระบุpublic:หรือprivate:สมาชิกของ struct เป็นแบบสาธารณะโดยค่าเริ่มต้น สมาชิกของคลาสเป็นส่วนตัวโดยค่าเริ่มต้น ฉันแน่ใจว่ามีความแตกต่างอื่น ๆ ที่จะพบในมุมปิดบังของสเปค C ++
441 c++  oop  class  struct  c++-faq 

9
ข้อผิดพลาด: คำขอสำหรับสมาชิก '.. ' ใน '.. ' ซึ่งเป็นประเภทที่ไม่ใช่ชั้นเรียน
ฉันมีคลาสที่มีคอนสตรัคเตอร์สองตัวอันที่ไม่มีข้อโต้แย้งและอีกหนึ่งที่ใช้อาร์กิวเมนต์เดียว การสร้างออบเจ็กต์โดยใช้ Constructor ที่รับหนึ่งอาร์กิวเมนต์ทำงานได้ตามที่คาด อย่างไรก็ตามถ้าฉันสร้างวัตถุโดยใช้ Constructor ที่ไม่มีข้อโต้แย้งฉันได้รับข้อผิดพลาด ตัวอย่างเช่นถ้าฉันรวบรวมรหัสนี้ (ใช้ g ++ 4.0.1) ... class Foo { public: Foo() {}; Foo(int a) {}; void bar() {}; }; int main() { // this works... Foo foo1(1); foo1.bar(); // this does not... Foo foo2(); foo2.bar(); return 0; } ... ฉันได้รับข้อผิดพลาดต่อไปนี้: nonclass.cpp: In function …
440 c++ 

8
วิธีที่มีประสิทธิภาพมากที่สุดในการรับดัชนีตัววนซ้ำของ std :: vector คืออะไร
ฉันกำลังวนซ้ำเวกเตอร์และต้องการดัชนีที่ตัววนซ้ำกำลังชี้ไปที่ AFAIK สามารถทำได้สองวิธี: it - vec.begin() std::distance(vec.begin(), it) อะไรคือข้อดีข้อเสียของวิธีการเหล่านี้?

6
อะไรคือวัตถุประสงค์หลักของการใช้ std :: forward และปัญหาอะไรที่แก้ได้?
ในการส่งต่อที่สมบูรณ์แบบstd::forwardใช้เพื่อแปลงการอ้างอิง rvalue ที่ระบุชื่อt1และt2การอ้างอิง rvalue ที่ไม่มีชื่อ จุดประสงค์ของการทำเช่นนั้นคืออะไร? สิ่งนั้นจะส่งผลกระทบต่อฟังก์ชั่นที่ถูกเรียกหรือไม่innerถ้าเราปล่อยให้t1&amp; t2เป็นค่า? template &lt;typename T1, typename T2&gt; void outer(T1&amp;&amp; t1, T2&amp;&amp; t2) { inner(std::forward&lt;T1&gt;(t1), std::forward&lt;T2&gt;(t2)); }

18
ควรใช้ไลบรารีแบบไดนามิกและแบบคงที่เมื่อใด
เมื่อสร้างไลบรารีคลาสใน C ++ คุณสามารถเลือกระหว่างไลบรารี dynamic ( .dll, .so) และ static ( .lib, .a) อะไรคือความแตกต่างระหว่างพวกเขาและเมื่อใดที่เหมาะสมที่จะใช้

6
ตัวเลือก GCC -fPIC
ฉันได้อ่านเกี่ยวกับ ตัวเลือกของ GCC สำหรับอนุสัญญาการสร้างรหัสแต่ไม่เข้าใจว่า "สร้างรหัสตำแหน่งที่ไม่ขึ้นกับตำแหน่ง (PIC)" อย่างไร โปรดยกตัวอย่างเพื่ออธิบายฉันว่ามันหมายความว่าอย่างไร
437 c++  gcc  options  fpic 

5
Debug vs Release ใน CMake
ในโครงการที่รวบรวม GCC ฉันจะเรียกใช้ CMake สำหรับแต่ละประเภทเป้าหมาย (debug / release) ได้อย่างไร ฉันจะระบุการดีบักและปล่อยแฟล็ก C / C ++ โดยใช้ CMake ได้อย่างไร ฉันจะแสดงให้เห็นได้อย่างไรว่าไฟล์ประมวลผลหลักจะถูกคอมไพล์ด้วยg++และหนึ่งไลบรารีซ้อนกันด้วยgcc?
436 c++  c  gcc  cmake 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.