C 過載 後可以直接 a 2 ,那為什麼過載 後不能 a 2 而要a 2

時間 2021-05-07 06:14:40

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...