Hier ist mein Code, und die IDE ist ++ DEV C 11Über Zeiger auf Elementfunktion der abgeleiteten Klasse
#include<iostream>
using namespace std;
class A{
public:
int a=15;
};
class B:public A
{
};
int main(){
int A::*ptr=&B::a; //OK
int B::*ptr1=&A::a; //why?
int B::A::*ptr2=&B::a;//why?
int B::A::*ptr3=&A::a; //why?
}
I Programmiersprachen gelesen haben - C++ und ich weiß, die Art der &B::a
int A::*
ist, aber ich verstehe nicht, warum die nächsten drei Zeilen die Compilation passieren werden. Und das seltsamste für mich ist die Syntax von int B::A::*
, was bedeutet das? Ich bin nur ein Neuling von C/C++
, also toleriere meine seltsame Frage.
@Ron Ahem .. Es ** ist ** [MCVE]. 'ptr' ist vom Typ' int A :: * ',' ptr2' ist vom Typ 'int B :: A :: *', etc .. Wie Sie sehen können: der Code von OP [compiles just fine] (http://ideone.com/Cz2Bmg), sie sind nur verwirrt über ** warum ** es kompiliert. –
@ AlgirdasPreidžius Wahr. Ich stehe korrigiert. – Ron
Warum glaubst du, dass sie die Kompilation nicht bestehen sollten? –