1樓:ZDH
源程式要先過詞法分析這一關(比如「a(2)」就要拆成[a,(2,)]這幾個單詞),然後過語法分析([a,(,2,)]會歸約為乙個類似函式呼叫的節點),然後才是語義繫結(函式呼叫、賦值、仿函式或是其他有限可能中的乙個)。[a,(,),2]過不了語法分析,就沒辦法向下進行了。
2樓:支援向量機
你在用別人的東西,別人的編譯器,就得聽別人的。這些都只是提供給你的介面而已,讓你這樣寫過載,都是表面的東西。但是背後怎麼解析是別人決定的,這就是標準。
你自己寫C++編譯器就可以把()過載解析成a()2呼叫。別人定的東西你問為什麼有什麼意義呢。就像是為什麼賦值你要用a=1,不用a<-1呢?
你要問為什麼嗎?
3樓:莊嚴
怎麼不問:
C++過載 "!" 後可以直接 !a,為什麼過載 「+」 後不能 「+a3」而要 a+3 ?
答:應該是人寫的。
答:八成是要的,畢竟C++語言標準這麼龐大複雜……答:表面上看是乙個組織定的,但最終當然還是人定的C++語法規範。
答:那人怕被罵唄!想想吧,定 +a3的話,最多也就被罵「過於學術」,你讓他出乙個 a()2 等於a(2)……我還沒先罵,可能題主你自己就要開罵了吧?
題主或許可以說自己脾性溫柔,從不罵人。
你是不罵人,但一門支援 a()2的語言真的流行起來了,而你正好在學習,到時你真的不會跑來問:
為什麼C++要支援 a()2 等同 a(2)呢?
是啊——
你這個問題,根本就不是「能不能」的問題,而是人家「要不要」的問題。
4樓:SPeak
運算子過載
1.只能過載規定的運算子
2.過載後不改變其用法(語法),只改變它的含義或動作
1.只能過載規定的運算子
例如你有個向量類想實現它的X乘,但不能過載X,因為它是字母不是運算子。
class
Vector
};int
main
()2.對提問中的程式
// 過載了(),引數是int
intmain
()3.關鍵點
對符號過載後不改變其本身的用法(語法),只改變它的含義或動作。
如過載加號, 他的語法還是原有的A + B的形式
過載呼叫符(), 他的語法還是可呼叫物件名(...)4.你可以試試這樣:
class
Plus
};int
main
()/*
Plus: 是個行為像函式的類( 由於過載了() )
pls: 是乙個可呼叫物件( 由於過載了() ),也可以叫他仿函式物件*/
5樓:普通少年pro max
()不是二元運算子,通常是函式呼叫運算子。
+-*/等是二元運算子,用法都是要A+B這一類,當然二元運算子只保證你用法要這樣,至於具體這個操作符帶來什麼操作,你可以自己自定義。
除非你在編譯器裡面給改了性質,否則你就要按照規矩來。
為什麼crh3a可以和crh2重聯?
kangxr CRH3a嚴格意義上是重聯不了CRH2a統的,文中提到的重聯,只屬於機械連線。也叫無火回送,或者救援,為什麼這麼說,讓我們回顧一下教材上重聯的定義要求機械連線,電氣聯接,網路連線同時滿足,方可重聯必須承認,CRH2a統採用了部分匯流排網結構,但是還是比較低階的can,和CRH3a的網路...
為什麼2和弦(Dm)可以直接去到6 Am 和弦?
第一種情況 Dm Am是下屬功能到主功能的進行。講得更清楚些,Dm Am不僅是C大調上的二級到六級,還是a小調上的四級到一級。你完全可以理解為 樂曲離調到了關係小調上做變格進行 就是四級到一級 小調上的四級到一級,是下屬到主的進行 大調上的二級到六級,是下屬功能到主功能的進行。這兩者自然是統一的。第...
C語言字元指標(字串)為什麼不可以直接像陣列那樣賦值?
check 777 直接定義乙個指標陣列不就行了,char a 3 tika64208 這個問題好理解,char str申請的是陣列,char p 申請的是乙個指標。而是什麼,是乙個具體的值,或者說3個具體的值,在編譯的時候就已經知道的值。你申請了4個元素的陣列,說裡面要存3個指定的值,叫分別是 a...