C++中必须要知道的知识

;class A{char A[100];};class B:public A{char B[100];};class C:public A{char C[100];};class D:public B,public C{char D[100];};A{char E[100];};class F:public virtual B{char F[100];};//函数传参获取数组长度的方法template<typename T,int N>void printArrLength(T (&C)[N]){cout << “C[] spare mem space is ” << sizeof(C) << endl;cout << “C[] length is ” << N << endl;cout << “The array typebyte is ” << sizeof(C)/N << endl;}/*详细的讲解虚继承:在继承定义中包含了virtual关键字的继承关系虚基类:在虚函数体系中的,通过virtual继承而来的基类,需要注意的是:class CSubClass:public virtual CBase {};其中,CBase称为CSubClass的虚基类,而不是说CBase就是个虚基类*/struct CBaseClass1{CBaseClass1(size_t n):m_val(n) {}public:size_t m_val;};struct CSubClassV1:public virtual CBaseClass1{CSubClassV1(size_t n):CBaseClass1(n) {}};struct CSubClassV2:public virtual CBaseClass1{CSubClassV2(size_t n):CBaseClass1(n) {}};struct CDiamondClass1:public CSubClassV1,public CSubClassV2{CDiamondClass1(size_t n):CBaseClass1(n),CSubClassV1(n),CSubClassV2(n) {}};struct CDiamondSubClass1:public CDiamondClass1{CDiamondSubClass1(size_t n):CBaseClass1(n),CDiamondClass1(n) {}};//函数指针void fa() { cout << “hello fa” << endl; }void fb() { cout << “hello fb” << endl; }void fc() { cout << “hello fc” << endl; }(*funcptr)(void);//在堆区产生二维数组void new2DArray(int x,int y){int ** p=new int*[y];for(int i=0;i<y;i++)p[i]=new int[x];int count=0;for(int i=0;i<x;i++)for(int j=0;j<y;j++)p[i][j]=count++;for(int i=0;i<x;i++){for(int j=0;j<y;j++)cout << p[i][j] << ” “;cout << endl;}}//测试部分int main(){<< << << D* pd = new D;C* pc = dynamic_cast<C*>(pd);B* pb = dynamic_cast<B*>(pd);cout << (int)(void*)pc << endl;cout << (int)(void*)pb << endl;p[]={1,2,3,4,5};printArrLength(p);//函数指针的测试部分funcptr fp;char choosefunc;cin >> choosefunc;switch(choosefunc){case ‘a’:fp=&fa;break;case ‘b’:fp=&fb;break;case ‘c’:fp=fc;break;default:break;}//这里别忘了调用(*fp)();//测试二维数组的产生new2DArray(4,5);return 0;}

,或许是某座闻名遐迩的文化古城。我们可以沿途用镜头记录彼此的笑脸,

C++中必须要知道的知识

相关文章:

你感兴趣的文章:

标签云: