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

7
ตัวแปรคงเริ่มต้นเมื่อใด
ฉันสงสัยว่าเมื่อใดที่ตัวแปรคงที่เริ่มต้นเป็นค่าเริ่มต้น ถูกต้องหรือไม่ที่เมื่อโหลดคลาสแล้วจะมีการสร้างตัวแปรแบบสแตติก (จัดสรร) จากนั้นตัวเริ่มต้นแบบคงที่และการกำหนดค่าเริ่มต้นในการประกาศจะถูกดำเนินการ มีการกำหนดค่าเริ่มต้นที่จุดใด สิ่งนี้นำไปสู่ปัญหาการอ้างอิงไปข้างหน้า นอกจากนี้โปรดหากคุณสามารถอธิบายสิ่งนี้โดยอ้างอิงถึงคำถามที่ถามว่าทำไมฟิลด์แบบคงที่ไม่เริ่มต้นในเวลา และโดยเฉพาะอย่างยิ่งคำตอบที่ได้รับจาก Kevin Brock ในเว็บไซต์เดียวกัน ฉันไม่เข้าใจจุดที่ 3

4
Swift: ตัวเริ่มต้น ViewController ที่กำหนดเอง
คุณจะเพิ่มตัวเริ่มต้นที่กำหนดเองให้กับUIViewControllerคลาสย่อยใน Swift ได้อย่างไร? ฉันได้สร้างคลาสย่อยUIViewControllerที่มีลักษณะดังนี้: class MyViewController : UIViewController { init(leftVC:UIViewController, rightVC:UIViewController, gap:Int) { self.leftVC = leftVC; self.rightVC = rightVC; self.gap = gap; super.init(); setupScrollView(); setupViewControllers(); } } เมื่อฉันเรียกใช้ฉันได้รับข้อผิดพลาดร้ายแรง: ข้อผิดพลาดร้ายแรง: การใช้ initializer ที่ไม่ได้ใช้งาน 'init (nibName: bundle :)' สำหรับคลาส 'MyApp.MyViewController' ฉันเคยอ่านมาแล้วว่าเมื่อเพิ่มตัวเริ่มต้นที่กำหนดเองจะต้องแทนที่ด้วยinit(coder aDecoder:NSCoder)ดังนั้นเรามาแทนที่สิ่งนั้นinitและดูว่าเกิดอะไรขึ้น: override init(coder aDecoder: NSCoder) { super.init(coder: aDecoder); } ถ้าฉันจะเพิ่มนี้ Xcode …

5
การเริ่มต้นค่า“ int * ptr = int ()” ไม่ผิดกฎหมายอย่างไร
รหัสต่อไปนี้ (นำมาจากที่นี่ ): int* ptr = int(); คอมไพล์ใน Visual C ++ และค่าเริ่มต้นตัวชี้ เป็นไปได้อย่างไร? ฉันหมายถึงint()ให้วัตถุประเภทหนึ่งintและฉันไม่สามารถกำหนดให้intกับตัวชี้ได้ โค้ดข้างบนไม่ผิดกฎหมายได้อย่างไร?

3
การเพิ่มโค้ดใน __init__.py
ฉันกำลังดูว่าระบบโมเดลใน django ทำงานอย่างไรและฉันสังเกตเห็นบางสิ่งที่ฉันไม่เข้าใจ ฉันรู้ว่าคุณสร้าง__init__.pyไฟล์ว่างเพื่อระบุว่าไดเร็กทอรีปัจจุบันเป็นแพ็กเกจ และคุณสามารถตั้งค่าตัวแปร__init__.pyเพื่อให้ import * ทำงานได้อย่างถูกต้อง แต่ django เพิ่มคำสั่ง from ... import ... และกำหนดกลุ่มของคลาสใน__init__.py. ทำไม? สิ่งนี้ไม่ทำให้สิ่งต่างๆดูยุ่งเหยิง? มีเหตุผลที่ต้องใช้รหัสนี้__init__.pyหรือไม่?

2
การเริ่มต้นพจนานุกรม C # นี้ถูกต้องอย่างไร
ฉันสะดุดต่อไปนี้และฉันสงสัยว่าทำไมมันไม่ทำให้เกิดข้อผิดพลาดทางไวยากรณ์ var dict = new Dictionary<string, object> { ["Id"] = Guid.NewGuid(), ["Tribes"] = new List<int> { 4, 5 }, ["MyA"] = new Dictionary<string, object> { ["Name"] = "Solo", ["Points"] = 88 } ["OtherAs"] = new List<Dictionary<string, object>> { new Dictionary<string, object> { ["Points"] = 1999 } } }; โปรดสังเกตว่า "," …

4
สร้างคำเตือนคอมไพเลอร์หากเครื่องหมายจุลภาคการเริ่มต้น const char * array หายไป
ฉันใช้ตารางตัวอักษรเป็นจำนวนมากในรหัส C ของฉัน ตารางเหล่านี้ทั้งหมดดูเหมือนมากขึ้นหรือน้อยลง: static const char* const stateNames[STATE_AMOUNT] = { "Init state", "Run state", "Pause state", "Error state", }; ปัญหาของโค้ดข้างต้นคือถ้าตารางยาวขึ้นและถูกแก้ไขระหว่างการพัฒนาฉันลืมเครื่องหมายจุลภาคเป็นครั้งคราว คอมไพล์รหัสโดยไม่ต้องมีปัญหากับเครื่องหมายจุลภาคหายไป แต่ปลายโปรแกรมของฉัน up crashing NULLเป็นสตริงที่ผ่านมามีการตั้งค่า ฉันใช้คอมไพเลอร์ MinGW และ Keil เพื่อตรวจสอบ มีวิธีใดในการสร้างคำเตือนคอมไพเลอร์สำหรับการเริ่มต้นของฉันหากคอมม่าหายไป?
53 c  initialization 

4
คัดลอก structs กับสมาชิกที่ไม่ได้กำหนดค่าเริ่มต้น
มันถูกต้องหรือไม่ที่จะคัดลอก struct ที่สมาชิกบางคนไม่ได้เริ่มต้น? ฉันสงสัยว่ามันเป็นพฤติกรรมที่ไม่ได้กำหนด แต่ถ้าเป็นเช่นนั้นมันจะทำให้สมาชิกที่ไม่ได้กำหนดค่าเริ่มต้นในโครงสร้าง (แม้ว่าสมาชิกเหล่านั้นจะไม่เคยใช้งานโดยตรง) ค่อนข้างอันตราย ดังนั้นฉันสงสัยว่ามีบางอย่างในมาตรฐานที่อนุญาตหรือไม่ เช่นนี้ถูกต้องหรือไม่ struct Data { int a, b; }; int main() { Data data; data.a = 5; Data data2 = data; }

1
การใช้ตัวแปรใน initializer ของตัวเอง
[basic.scope.pdecl] / 1ของร่างมาตรฐาน C ++ 20 มีตัวอย่าง (ไม่ใช่กฎเกณฑ์) ดังต่อไปนี้ในบันทึกย่อ (อ้างบางส่วนจากก่อนที่จะรวมคำขอดึง 3580ดูคำตอบสำหรับคำถามนี้): unsigned char x = x; [... ] x ถูกเตรียมใช้งานด้วยค่าของตัวเอง (ไม่ทราบแน่ชัด) สิ่งนี้มีพฤติกรรมที่ชัดเจนใน C ++ 20 หรือไม่ โดยทั่วไปการกำหนดค่าเริ่มต้นด้วยตนเองของแบบฟอร์มT x = x;จะมีพฤติกรรมที่ไม่ได้กำหนดโดยอาศัยคุณค่าของxการไม่ได้กำหนดค่าก่อนที่การเริ่มต้นจะเสร็จสมบูรณ์ การประเมินค่าที่ไม่ทราบแน่ชัดมักทำให้เกิดพฤติกรรมที่ไม่ได้กำหนด ( [basic.indent] / 2 ) แต่มีข้อยกเว้นเฉพาะใน[basic.indent] /2.3ที่อนุญาตให้เริ่มต้นunsigned charตัวแปรโดยตรงจากค่า lvalue unsigned charด้วยค่าที่ไม่ทราบแน่ชัด ) นี้เพียงอย่างเดียวไม่ดังนั้นจึงไม่ก่อให้เกิดพฤติกรรมที่ไม่ได้กำหนด แต่จะประเภทอื่น ๆTที่ไม่ได้รับการรับรองรูปแบบตัวอักษรหรือแคบเช่นstd::byte int x = x;ข้อควรพิจารณาเหล่านี้มีผลใน …

6
การเริ่มต้นตัวแปรชนิดที่ไม่รู้จักผ่านตัวสร้างที่โอเวอร์โหลดใน C ++
มาจากพื้นหลังหลามส่วนใหญ่ฉันค่อนข้างลำบากกับการทำงานกับประเภทใน C ++ ฉันพยายามที่จะเริ่มต้นตัวแปรระดับผ่านหนึ่งในหลายตัวสร้างมากเกินไปที่ใช้ประเภทที่แตกต่างกันเป็นพารามิเตอร์ ฉันได้อ่านแล้วว่าการใช้autoคำหลักนั้นสามารถใช้สำหรับการประกาศอัตโนมัติของตัวแปรได้อย่างไรก็ตามในกรณีของฉันมันจะไม่ถูกกำหนดค่าเริ่มต้นจนกว่าจะเลือกคอนสตรัคเตอร์ แต่คอมไพเลอร์ไม่ได้มีความสุขเกี่ยวกับการไม่ valueinitialising class Token { public: auto value; Token(int ivalue) { value = ivalue; } Token(float fvalue) { value = fvalue; } Token(std::string svalue) { value = svalue; } void printValue() { std::cout << "The token value is: " << value << std::endl; } }; …

4
วิธีการเรียกตัวสร้างที่ถูกต้องของประเภทแม่แบบ?
ในรหัสต่อไปนี้ฉันจะทำให้บรรทัดที่มีความคิดเห็นทำงานในลักษณะเดียวกับบรรทัดที่อยู่เหนือบรรทัดได้อย่างไร Typeผมอยากจะทำให้มันเป็นโค้ดทั่วไปที่โทรคอนสตรัคที่เหมาะสมของแม่แบบ #include <string> #include <iostream> template <typename Type> struct Class { Type data; Class(Type data) : data(data) { } }; int main() { Class<std::string> a = std::string("abc"); // Class<std::string> b = "abc"; std::cout << a.data << std::endl; return 0; }

2
การกำหนดค่าเริ่มต้นตัวแปร Kotlin สำหรับคลาสลูกทำงานแปลกสำหรับการเริ่มต้นตัวแปรด้วยค่า 0
ฉันได้สร้างลำดับชั้นของคลาสต่อไปนี้: open class A { init { f() } open fun f() { println("In A f") } } class B : A() { var x: Int = 33 init { println("x: " + x) } override fun f() { x = 1 println("x in f: "+ x) } init { …

4
ทำไม int x {y = 5} จึงเป็นไปได้
int main() { int y; int x{ y = 5 }; //x is 5 } สิ่งนี้เป็นไปได้อย่างไรเนื่องจาก y = 5 ไม่ใช่นิพจน์ที่คำนวณได้? นอกจากนี้ทำไมคอมไพเลอร์หรือ IDE ไม่บ่นเกี่ยวกับ main () ไม่ส่งคืน int

4
ซ่อนคลาสฐานที่ว่างเปล่าสำหรับการเริ่มต้นรวม
พิจารณารหัสต่อไปนี้: struct A { // No data members //... }; template<typename T, size_t N> struct B : A { T data[N]; } นี่คือวิธีที่คุณต้องเริ่มต้น B: B<int, 3> b = { {}, {1, 2, 3} }; ฉันต้องการหลีกเลี่ยงการว่าง {} ที่ไม่จำเป็นสำหรับคลาสฐาน มีวิธีแก้ปัญหาที่เสนอโดย Jarod42 ที่นี่แต่มันไม่ทำงานกับองค์ประกอบการเริ่มต้นองค์ประกอบ: B<int, 3> b = {1, 2, 3};ดี แต่B<int, 3> b …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.