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

ค่าคงที่ในการเขียนโปรแกรมเป็นคำจำกัดความที่มีค่าคงที่ตลอดการทำงานของโปรแกรม ตัวอักษรในภาษาส่วนใหญ่เป็นค่าคงที่เช่น ในรูปแบบการเขียนโปรแกรมแบบอ้างอิงโปร่งใสทุกคำจำกัดความเป็นค่าคงที่ พื้นที่จัดเก็บข้อมูลที่ผ่านการรับรองคุณสมบัติ (ออบเจ็กต์, ฟิลด์, ตัวแปร, พารามิเตอร์) คือพื้นที่ที่ "ไม่เคยเปลี่ยนแปลง" จึงทำให้สามารถเพิ่มประสิทธิภาพของตัวสร้างโค้ดเสริมและตรวจสอบความถูกต้องของโปรแกรมเพิ่มเติมได้


5
มีการประกาศตัวแปรที่มีการอนุญาตหรือไม่เผยแพร่ใน ES6 หรือไม่
Наэтотвопросестьответына กองมากเกินнарусском : Всплываютлипеременные, объявленныеспомощьюให้и const в ES6? ฉันเล่นกับ ES6 มาระยะหนึ่งแล้วและสังเกตว่าในขณะที่ตัวแปรที่ประกาศด้วยvarถูกยกขึ้นตามที่คาดไว้ ... console.log(typeof name); // undefined var name = "John"; ... ตัวแปรที่ประกาศด้วยletหรือconstดูเหมือนจะมีปัญหากับการชักรอก: console.log(typeof name); // ReferenceError let name = "John"; และ console.log(typeof name); // ReferenceError const name = "John"; นี่หมายความว่าตัวแปรที่ประกาศด้วยletหรือconstไม่ถูกยกขึ้นมา? เกิดอะไรขึ้นที่นี่จริงเหรอ? มีความแตกต่างระหว่างletและconstในเรื่องนี้หรือไม่?

19
ฉันจะลบการทำสำเนารหัสระหว่างฟังก์ชั่นสมาชิกแบบ const และ non-const ที่คล้ายกันได้อย่างไร
สมมติว่าฉันมีสิ่งต่อไปนี้class Xที่ฉันต้องการคืนการเข้าถึงสมาชิกภายใน: class Z { // details }; class X { std::vector<Z> vecZ; public: Z& Z(size_t index) { // massive amounts of code for validating index Z& ret = vecZ[index]; // even more code for determining that the Z instance // at index is *exactly* the right sort of Z …

11
ทำไมการอ้างอิงที่ไม่ใช่สมาชิกไม่สามารถผูกกับวัตถุชั่วคราวได้?
ทำไมมันไม่ได้รับอนุญาตให้รับการอ้างอิงที่ไม่ใช่ const ไปยังวัตถุชั่วคราวซึ่งฟังก์ชั่นgetx()ส่งกลับ? เห็นได้ชัดว่านี่เป็นสิ่งต้องห้ามตามมาตรฐาน C ++ แต่ฉันสนใจในวัตถุประสงค์ของข้อ จำกัด ดังกล่าวไม่ใช่การอ้างอิงถึงมาตรฐาน struct X { X& ref() { return *this; } }; X getx() { return X();} void g(X & x) {} int f() { const X& x = getx(); // OK X& x = getx(); // error X& x = getx().ref(); // …

10
คง const เทียบกับ #define
การใช้static constvars ดีกว่า#definepreprocessor หรือไม่ หรืออาจจะขึ้นอยู่กับบริบท ข้อดี / ข้อเสียของแต่ละวิธีคืออะไร?
212 c++  c  const 

4
การใช้ const อย่างเหมาะสมเพื่อกำหนดฟังก์ชันใน JavaScript
ฉันสนใจถ้ามีข้อ จำกัด ใด ๆ กับประเภทของค่าที่สามารถตั้งค่าได้โดยใช้constใน JavaScript - ในฟังก์ชั่นเฉพาะ ถูกต้องหรือไม่ ได้รับมันใช้งานได้ แต่มันถือว่าเป็นการปฏิบัติที่ไม่ดีไม่ว่าด้วยเหตุผลใด? const doSomething = () => { ... } ควรกำหนดฟังก์ชั่นทั้งหมดด้วยวิธีนี้ใน ES6 หรือไม่ ดูเหมือนว่าจะไม่เป็นเช่นนี้ถ้าเป็นเช่นนั้น ขอบคุณสำหรับความคิดเห็นใด ๆ !



13
ฉันจะรับเนื้อหาทรัพยากรจากบริบทแบบคงที่ได้อย่างไร
ฉันต้องการอ่านสตริงจากxmlไฟล์ก่อนที่ฉันจะทำอะไรอื่น ๆ อีกมากมายเช่นsetTextในวิดเจ็ตดังนั้นฉันจะทำสิ่งนั้นโดยไม่ต้องเรียกใช้ออบเจ็กต์กิจกรรมได้getResources()อย่างไร

4
ประกาศอาร์เรย์คงที่
ฉันเหนื่อย: const ascii = "abcdefghijklmnopqrstuvwxyz" const letter_goodness []float32 = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } const letter_goodness = { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } const letter_goodness = []float32 { .0817,.0149,.0278,.0425,.1270,.0223,.0202, .0609,.0697,.0015,.0077,.0402,.0241,.0675, .0751,.0193,.0009,.0599,.0633,.0906,.0276, .0098,.0236,.0015,.0197,.0007 } ขั้นแรกการประกาศและการเริ่มต้นทำงานได้ดี แต่ตัวที่สองสามและสี่ไม่ทำงาน ฉันจะประกาศและเริ่มต้นอาร์เรย์อาร์เรย์ของ const ได้อย่างไร
164 arrays  go  const 

11
ค่าคงที่สุดท้ายเทียบกับ C ++ ของ Java
Java สำหรับการเขียนโปรแกรมภาษา C ++ กวดวิชากล่าวว่า (ไฮไลท์เป็นของตัวเอง): สุดท้ายคำหลักคือประมาณ เทียบเท่ากับ const ใน C ++ "คร่าวๆ" หมายความว่าอะไรในบริบทนี้ พวกเขาไม่เหมือนกันหรือ อะไรคือความแตกต่างถ้ามี?
151 java  c++  const  final 

3
โซนตายชั่วคราวคืออะไร
ฉันได้ยินมาว่าการเข้าถึงletและconstค่านิยมก่อนที่จะเริ่มต้นสามารถทำให้เกิดReferenceErrorเพราะสิ่งที่เรียกว่าเขตตายชั่วคราวเขตตายชั่วคราว โซนตายชั่วคราวคืออะไรมันเกี่ยวข้องกับขอบเขตและการชักรอกอย่างไรและในสถานการณ์ใดที่พบ

17
พอยน์เตอร์พอยน์คืออะไร?
ฉันไม่ได้พูดถึงพอยน์เตอร์ให้เป็นค่าคงที่ แต่เป็นพอยต์พอยต์ของตัวเอง ฉันกำลังเรียนรู้ C และ C ++ เกินกว่าสิ่งพื้นฐานมากและจนถึงวันนี้ฉันก็ตระหนักว่าตัวชี้ถูกส่งผ่านไปยังฟังก์ชั่นที่มีคุณค่า ซึ่งหมายความว่าภายในฟังก์ชั่นฉันสามารถทำให้ตัวชี้ที่คัดลอกไปยังค่าอื่น ๆ โดยไม่ส่งผลกระทบต่อตัวชี้ดั้งเดิมจากผู้โทร ดังนั้นประเด็นของการมีส่วนหัวของฟังก์ชั่นที่บอกว่า: void foo(int* const ptr); ภายในฟังก์ชั่นดังกล่าวคุณไม่สามารถกำหนดจุด ptr เป็นอย่างอื่นได้เนื่องจากเป็นค่าคงที่และคุณไม่ต้องการให้แก้ไข แต่เป็นฟังก์ชันดังนี้: void foo(int* ptr); ทำงานได้ดีเช่นกัน! เนื่องจากตัวชี้ถูกคัดลอกแล้วและตัวชี้ในผู้โทรจะไม่ได้รับผลกระทบแม้ว่าคุณจะแก้ไขการคัดลอก ดังนั้นข้อดีของ const คืออะไร
149 c++  c  pointers  const 

6
Const ก่อนหรือ const หลัง?
ในการเริ่มต้นคุณอาจรู้ว่าconstสามารถใช้สร้างข้อมูลของวัตถุหรือตัวชี้ที่ไม่สามารถแก้ไขได้หรือทั้งสองอย่าง const Object* obj; // can't change data Object* const obj; // can't change pointer const Object* const obj; // can't change data or pointer อย่างไรก็ตามคุณยังสามารถใช้ไวยากรณ์: Object const *obj; // same as const Object* obj; สิ่งเดียวที่ดูเหมือนจะสำคัญคือด้านใดของดอกจันที่คุณใส่constคำหลัก โดยส่วนตัวแล้วฉันชอบที่จะใส่constทางด้านซ้ายของประเภทเพื่อระบุว่ามันเป็นข้อมูลที่ไม่สามารถแก้ไขได้เพราะฉันคิดว่ามันอ่านได้ดีกว่าในความคิดจากซ้ายไปขวา แต่ไวยากรณ์ใดมาก่อน ที่สำคัญกว่านั้นคือทำไมมีวิธีการระบุconstข้อมูลที่ถูกต้องสองวิธีและในสถานการณ์ใดที่คุณต้องการหรือต้องการอีกวิธีหนึ่งหากมี แก้ไข: ดังนั้นดูเหมือนว่านี่เป็นการตัดสินใจตามอำเภอใจเมื่อมาตรฐานสำหรับวิธีที่คอมไพเลอร์ควรตีความสิ่งต่าง ๆ ที่ร่างขึ้นมานานก่อนที่ฉันจะเกิด เนื่องจากconstถูกนำไปใช้กับสิ่งที่อยู่ทางซ้ายของคำหลัก (โดยค่าเริ่มต้น) ฉันคิดว่าพวกเขาคิดว่าไม่มีอันตรายใด ๆ ในการเพิ่ม"ทางลัด"เพื่อใช้คำหลักและตัวระบุประเภทในวิธีอื่น ๆ อย่างน้อยก็จนกว่าจะถึงเวลา …
146 c++  c  syntax  const 


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