คำถามติดแท็ก new-operator

14
คำหลัก 'ใหม่' ใน JavaScript คืออะไร
newคำหลักใน JavaScript อาจจะค่อนข้างสับสนเมื่อมันเป็นครั้งแรกที่พบเป็นคนมักจะคิดว่า JavaScript ไม่ได้เป็นภาษาการเขียนโปรแกรมเชิงวัตถุ มันคืออะไร? มันแก้ปัญหาอะไรได้บ้าง? มันเหมาะสมเมื่อใดและเมื่อใด

18
เหตุใดโปรแกรมเมอร์ C ++ ควรลดการใช้ 'ใหม่' ให้น้อยที่สุด
ฉันสะดุดกับคำถามStack Overflow หน่วยความจำรั่วด้วย std :: string เมื่อใช้ std :: list <std :: string>และหนึ่งในความเห็นบอกว่า: หยุดใช้newมาก ฉันไม่เห็นเหตุผลที่คุณใช้ใหม่ทุกที่ที่คุณทำ คุณสามารถสร้างวัตถุตามมูลค่าในC ++และเป็นหนึ่งในข้อได้เปรียบอย่างมากสำหรับการใช้ภาษา คุณไม่ต้องจัดสรรทุกอย่างบนกอง หยุดคิดเหมือนโปรแกรมเมอร์Java ฉันไม่แน่ใจจริงๆว่าเขาหมายถึงอะไร เหตุใดจึงควรสร้างวัตถุตามค่าในC ++บ่อยที่สุดเท่าที่จะเป็นไปได้และวัตถุภายในนั้นแตกต่างกันอย่างไร ฉันตีความคำตอบผิดหรือไม่

19
ฉันใช้ malloc และ / หรือใหม่ในกรณีใดบ้าง
ฉันเห็นใน C ++ มีหลายวิธีในการจัดสรรและฟรีข้อมูลและฉันเข้าใจว่าเมื่อคุณโทรmallocคุณควรโทรfreeและเมื่อคุณใช้newโอเปอเรเตอร์คุณควรจับคู่deleteและเป็นความผิดพลาดในการผสมสองอย่าง (เช่นการโทรหาfree()บางสิ่งที่สร้างขึ้น กับnewผู้ดำเนินการ) แต่ฉันไม่ชัดเจนว่าควรใช้malloc/ freeและเมื่อใดควรใช้new/ deleteในโปรแกรมในโลกแห่งความเป็นจริง หากคุณเป็นผู้เชี่ยวชาญ C ++ โปรดแจ้งให้เราทราบกฎเกณฑ์หรือหลักการที่คุณปฏิบัติตามในเรื่องนี้

22
มีประโยชน์อะไรบ้างสำหรับ "การจัดวางใหม่"
มีใครที่นี่เคยใช้ "ตำแหน่งใหม่" ของ C ++ หรือไม่ ถ้าใช่มีไว้เพื่ออะไร ดูเหมือนว่าฉันจะเป็นประโยชน์กับฮาร์ดแวร์ที่แมปหน่วยความจำเท่านั้น

14
การส่งผ่านอาร์กิวเมนต์ไปยัง C # generic ใหม่ () ประเภท templated
ฉันกำลังพยายามสร้างวัตถุใหม่ของประเภท T ผ่านตัวสร้างเมื่อเพิ่มลงในรายการ ฉันพบข้อผิดพลาดในการคอมไพล์: ข้อความแสดงข้อผิดพลาดคือ: 'T': ไม่สามารถให้ข้อโต้แย้งเมื่อสร้างอินสแตนซ์ของตัวแปร แต่คลาสของฉันมีอาร์กิวเมนต์ตัวสร้าง! ฉันจะทำงานนี้ได้อย่างไร public static string GetAllItems<T>(...) where T : new() { ... List<T> tabListItems = new List<T>(); foreach (ListItem listItem in listCollection) { tabListItems.Add(new T(listItem)); // error here. } ... }

9
สร้างวัตถุว่างเปล่าใน JavaScript ด้วย {} หรือวัตถุใหม่ ()?
มีสองวิธีในการสร้างวัตถุว่างใน JavaScript: var objectA = {} var objectB = new Object() มีความแตกต่างในวิธีการที่โปรแกรมสคริปต์จัดการกับพวกเขา? มีเหตุผลที่จะใช้อย่างใดอย่างหนึ่งมากกว่าที่อื่น ๆ ? ในทำนองเดียวกันก็เป็นไปได้ที่จะสร้างอาร์เรย์ว่างโดยใช้ไวยากรณ์ที่แตกต่างกัน: var arrayA = [] var arrayB = new Array()

11
ฉันควรใช้คำหลักใหม่ใน C ++ เมื่อใด
ฉันใช้ C ++ มาระยะหนึ่งแล้วและฉันก็สงสัยเกี่ยวกับคำหลักใหม่ ฉันควรจะใช้หรือไม่? 1) ด้วยคำหลักใหม่ ... MyClass* myClass = new MyClass(); myClass->MyField = "Hello world!"; 2) ไม่มีคำหลักใหม่ ... MyClass myClass; myClass.MyField = "Hello world!"; จากมุมมองของการใช้งานพวกเขาดูเหมือนจะไม่แตกต่างกัน (แต่ฉันแน่ใจว่าพวกเขาเป็น) ... อย่างไรก็ตามภาษาหลักของฉันคือ C # และแน่นอนวิธีที่ 1 คือสิ่งที่ฉันคุ้นเคย ความยากดูเหมือนจะเป็นวิธีที่ 1 นั้นยากที่จะใช้กับคลาส std C ++ ฉันควรใช้วิธีใด อัปเดต 1: ฉันเพิ่งใช้คำหลักใหม่สำหรับหน่วยความจำฮีป (หรือที่เก็บสินค้าฟรี ) สำหรับอาร์เรย์ขนาดใหญ่ซึ่งอยู่นอกขอบเขต (เช่นถูกส่งคืนจากฟังก์ชัน) เมื่อก่อนที่ฉันใช้กองซ้อนซึ่งทำให้องค์ประกอบครึ่งหนึ่งเสียหายนอกขอบเขตเปลี่ยนเป็นการใช้ฮีปเพื่อให้แน่ใจว่าองค์ประกอบนั้นอยู่ในชั้นเชิง …

12
วิธีเปิดในเบราว์เซอร์เริ่มต้นใน C #
ฉันกำลังออกแบบแอปพลิเคชัน C # ขนาดเล็กและมีเว็บเบราว์เซอร์ในนั้น ขณะนี้ฉันมีค่าเริ่มต้นทั้งหมดในคอมพิวเตอร์ของฉันว่า google chrome เป็นเบราว์เซอร์เริ่มต้นของฉัน แต่เมื่อฉันคลิกลิงก์ในแอปพลิเคชันของฉันเพื่อเปิดในหน้าต่างใหม่มันเปิด Internet explorer มีวิธีใดที่จะทำให้ลิงก์เหล่านี้เปิดในเบราว์เซอร์เริ่มต้นแทนหรือไม่ หรือมีสิ่งผิดปกติในคอมพิวเตอร์ของฉัน ปัญหาของฉันคือฉันมีเว็บเบราว์เซอร์ในแอปพลิเคชันดังนั้นถ้าคุณไปที่ google แล้วพิมพ์ "stack overflow" และคลิกขวาที่ลิงค์แรกและคลิก "เปิดในหน้าต่างใหม่" มันเปิดใน IE แทน Chrome นี่เป็นสิ่งที่ฉันทำรหัสไม่ถูกต้องหรือมีการตั้งค่าที่ไม่ถูกต้องในคอมพิวเตอร์ของฉัน === === แก้ไข มันน่ารำคาญจริงๆ ฉันรู้แล้วว่าเบราว์เซอร์นั้นเป็น IE แต่ฉันก็ใช้งานได้ดีมาก่อน เมื่อฉันคลิกลิงค์จะเปิดขึ้นในโครเมี่ยม ฉันใช้การพัฒนาที่คมชัดเพื่อสร้างแอปพลิเคชันในเวลานั้นเพราะฉันไม่สามารถเริ่ม c # express ฉันติดตั้ง windows ใหม่และเนื่องจากฉันไม่ได้อยู่ในแอปพลิเคชันของฉันฉันจึงตัดสินใจเริ่มต้นใหม่และตอนนี้ฉันมีปัญหานี้ นั่นคือสาเหตุที่ฉันไม่แน่ใจว่าเป็นคอมพิวเตอร์ของฉันหรือไม่ เหตุใด IE จะเริ่มต้นเบราว์เซอร์ทั้งหมดเมื่อมีการคลิกลิงก์แทนที่จะเป็นการเปิดลิงก์ใหม่ในเบราว์เซอร์เริ่มต้น

6
C ++ ใหม่ int [0] - มันจะจัดสรรหน่วยความจำหรือไม่
แอปทดสอบอย่างง่าย: cout << new int[0] << endl; เอาท์พุท: 0x876c0b8 ดังนั้นจึงดูเหมือนว่ามันใช้งานได้ มาตรฐานพูดถึงอะไรเกี่ยวกับเรื่องนี้? เป็นเรื่องถูกกฎหมายหรือไม่ที่จะ "จัดสรร" บล็อกหน่วยความจำที่ว่างเปล่าอยู่เสมอ?

10
อนุญาตให้ลบหรือไม่
มันอนุญาตให้delete this;หากคำสั่งลบเป็นคำสั่งสุดท้ายที่จะดำเนินการในอินสแตนซ์ของชั้นเรียนที่? แน่นอนฉันแน่ใจว่าวัตถุที่แสดงโดยthis-pointer นั้นnewถูกสร้างขึ้นอย่างสมบูรณ์ ฉันกำลังคิดเกี่ยวกับสิ่งนี้: void SomeModule::doStuff() { // in the controller, "this" object of SomeModule is the "current module" // now, if I want to switch over to a new Module, eg: controller->setWorkingModule(new OtherModule()); // since the new "OtherModule" object will take the lead, // I want to get …

6
เราสามารถละเว้นวงเล็บเมื่อสร้างวัตถุโดยใช้ตัวดำเนินการ“ ใหม่” ได้หรือไม่?
ฉันเคยเห็นวัตถุที่ถูกสร้างขึ้นด้วยวิธีนี้: const obj = new Foo; แต่ฉันคิดว่าวงเล็บไม่ได้เป็นตัวเลือกเมื่อสร้างวัตถุ: const obj = new Foo(); วิธีการสร้างวัตถุในอดีตนั้นใช้ได้และถูกกำหนดในมาตรฐาน ECMAScript หรือไม่? มีความแตกต่างระหว่างวิธีการสร้างวัตถุในอดีตหรือในภายหลังหรือไม่? เป็นที่ต้องการมากกว่าหนึ่งอื่น ๆ ?

14
ความแตกต่างระหว่างใหม่และแทนที่
สงสัยว่าความแตกต่างระหว่างสิ่งต่อไปนี้: กรณีที่ 1: คลาสพื้นฐาน public void DoIt(); กรณีที่ 1: คลาสที่รับมา public new void DoIt(); กรณีที่ 2: คลาสฐาน public virtual void DoIt(); กรณีที่ 2: คลาสที่รับมา public override void DoIt(); ทั้งกรณีที่ 1 และ 2 ดูเหมือนว่าจะมีผลเหมือนกันตามการทดสอบที่ฉันใช้ มีความแตกต่างหรือวิธีที่ต้องการหรือไม่?


8
วิธีการเริ่มต้นหน่วยความจำด้วยตัวดำเนินการใหม่ใน C ++
ฉันเพิ่งเริ่มเข้าสู่ C ++ และฉันต้องการรับนิสัยที่ดี หากฉันเพิ่งจัดสรรอาเรย์ประเภทที่intมีnewโอเปอเรเตอร์ฉันจะกำหนดค่าเริ่มต้นให้เป็น 0 ได้อย่างไรโดยไม่ต้องวนลูปเองทั้งหมด? ฉันควรจะเพียงแค่ใช้memset? มีวิธี“ C ++” ที่จะทำหรือไม่

9
สร้างโฟลเดอร์ภายในโฟลเดอร์เอกสารในแอพ iOS
ฉันแค่ต้องการสร้างโฟลเดอร์ใหม่ในโฟลเดอร์เอกสารของแอพ iPhone ของฉัน ไม่มีใครรู้วิธีการทำเช่นนั้น? ขอบคุณที่คุณช่วย!

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