ทำไมลำไส้ใหญ่สองเท่าแทนที่จะเป็นจุด


19

มีข่าวลือว่าการใช้งาน C ++ ในช่วงต้นมีตัวดำเนินการ dot สำหรับการเข้าถึงเนมสเปซ มีความเห็นว่าจุดที่สะดวกกว่าที่ผู้ประกอบการลำไส้ใหญ่สองครั้งที่ทันสมัย

อะไรคือเหตุผลที่อยู่เบื้องหลังการแนะนำลำไส้ใหญ่คู่


3
ด้านบนของหัวของฉัน C ++ ช่วยให้คุณ::symbolสามารถบังคับให้ค้นหาsymbolใน namespace ทั่วโลกแทน namespace ปัจจุบันดังนั้นอย่างน้อยสิ่งหนึ่งที่จะดูสับสนมากและอาจแนะนำความคลุมเครือเกี่ยวกับการใช้ภาษามากขึ้น ตัวดำเนินการจุดถูกใช้แทน
Ixrec

14
The :: horribly :: ugly proliferation :: of :: C ++ เนมสเปซ :: resolution :: โอเปอเรเตอร์ทุกที่ :: รู้จัก :: เป็นโคลอน :: มะเร็ง
Mason Wheeler

1
ฉันเดาว่ามันทำให้เกิดความสับสนในเครื่องวิเคราะห์ความหมาย Dot ยังใช้สำหรับชื่อเมธอดคำนำหน้าซึ่งเป็นแนวคิดที่ค่อนข้างคล้ายกันและอาจแยกได้ยาก นี่เป็นวิธีที่ชัดเจนในการแก้ไข
RápliAndrás


5
การเพิ่มจำนวนของเมสันวีลเลอร์ที่น่าเกลียดอย่างน่ากลัวในการโจมตี C ไม่มีชื่อเพราะความชั่วร้ายดังกล่าวจะต้องไม่ทำให้เสียชื่อเสียง
Jerry Coffin

คำตอบ:


14

ตามที่สังเกตโดย Julesมันเป็นความจริงที่ว่าการใช้งาน C ++ ในช่วงต้น (CFront pre-1.0) มีจุดสำหรับการระบุขอบเขต

จุดยังใช้ในC กับ Classes (1980) อันที่จริงนี่เป็นตัวอย่างง่ายๆจากคลาส: สิ่งอำนวยความสะดวกประเภทข้อมูลนามธรรมสำหรับภาษา C 1 :

class stack {
    char    s[SIZE];  /* array of characters */
    char *  min;      /* pointer to bottom of stack */
    char *  top;      /* pointer to top of stack */
    char *  max;      /* pointer to top of allocated space */
    void    new();    /* initialization function (constructor) */
public:
    void push(char);
    char pop();
};

char stack.pop()
{
    if (top <= min) error("stack underflow");
    return *(−−top);
}

(รหัสเป็นตัวอย่างของวิธีการที่ฟังก์ชันสมาชิกกำหนดโดยทั่วไป "ที่อื่น")

::เป็นหนึ่งของการเพิ่มเพื่อC ที่มีการเรียนการสอนนำไปผลิต C ++

เหตุผลที่ได้รับจาก Stroustrup ตัวเอง:

ใน C กับคลาสจุดถูกใช้เพื่อแสดงความเป็นสมาชิกของคลาสรวมทั้งแสดงการเลือกสมาชิกของวัตถุเฉพาะ

นี่เป็นสาเหตุของความสับสนเล็กน้อยและยังสามารถใช้เพื่อสร้างตัวอย่างที่คลุมเครือ เพื่อบรรเทาสิ่งนี้::ได้รับการแนะนำให้รู้จักกับความเป็นสมาชิกของชั้นเรียนและ.ถูกสงวนไว้เฉพาะสำหรับการเป็นสมาชิกของวัตถุ

( ประวัติของ C ++: 1979−1991 [2] หน้า 21 - § 3.3.1)


  1. Bjarne Stroustrup: "Classes: สิ่งอำนวยความสะดวกประเภทข้อมูลนามธรรมสำหรับภาษา C" - รายงานทางเทคนิคด้านวิทยาศาสตร์คอมพิวเตอร์ของ Bell Laboratories CSTR − 84 เมษายน 2523

  2. Bjarne Stroustrup: "ประวัติของ C ++: 1979−1991" - AT&T Bell Laboratories Murray Hill, นิวเจอร์ซีย์ 07974

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