更新时间:2022-10-12 11:22:35
返回:贺老师课程教学链接
#include <iostream> using namespace std; class A { public: A() { a=0; } A (int i) { a=i; } void print() { cout<<a<<" "; } private: int a; }; class B: public A { public: B() { b=0; } B(int i, int j, int k): A(i),aa(j) { b=k; } //思考:这3处出现的print,有何区别 void print() //(1) { A::print(); //(2) aa.print(); //(3) cout<<b<<endl; } private: int b; A aa; }; int main() { B test[2]; test[0]=B(1,4,7); test[1]=B(2,5,8); for(int i=0; i<2; i++) test[i].print(); return 0; }
#include <iostream> using namespace std; class A { public: A(char *s) { cout<<s<<endl; } }; class B:public A { public: B(char *s1, char *s2):A(s1) { cout<<s2<<endl; } }; class C:public A { public: C(char *s1,char *s2):A(s1) { cout<<s2<<endl; } }; class D:public B, C { public: D(char *s1,char *s2,char *s3,char *s4):B(s1,s2),C(s3,s4) { cout<<s4<<endl; } }; int main() { D d("class A","class B","class C","class D"); return 0; }
#include <iostream> using namespace std; class Base { public: Base(char i) { cout<<"Base constructor. --"<<i<<endl; } }; class Derived1:virtual public Base { public: Derived1(char i,char j):Base(i) { cout<<"Derived1 constructor. --"<<j<<endl; } }; class Derived2:virtual public Base { public: Derived2(char i,char j):Base(i) { cout<<"Derived2 constructor. --"<<j<<endl; } }; class MyDerived:public Derived1,public Derived2 { public: MyDerived(char i,char j,char k,char l,char m,char n,char x): Derived2(i,j), Derived1(k,l), Base(m), d(n) { cout<<"MyDerived constructor. --"<<x<<endl; } private: Base d; }; int main() { MyDerived obj('A','B','C','D','E','F','G'); return 0; }
#include<iostream> using namespace std; class A { public: int n; }; class B:public A {}; // class B:virtual public A{}; class C:public A {}; // class C:virtual public A{}; class D:public B,public C { public: int getn() {return B::n;} }; int main() { D d; d.B::n=10; d.C::n=20; cout<<d.getn()<<endl; return 0; }
#include <iostream> using namespace std; class A { protected: int a,b; public: A(int aa, int bb):a(aa), b(bb) {} void printA() { cout<<"a: "<<a<<"\tb: "<<b<<endl; } }; class B: public A { int c; public: B(int aa, int bb, int cc):A(aa,bb),c(cc) {} void printB() { cout<<"a: "<<a<<"\tb: "<<b<<"\tc: "<<c<<endl; } }; int main() { A a(1,1); B b(2,3,4); //此处加入下面各小题中的代码 return 0; }
a=b; a.printA(); b.printA(); b.printB();你认为输出结果是:______________________
b=a; a.printA(); b.printA(); b.printB();程序会发生编译错误,原因是:__________
A &r1=a; A &r2=b; r1.printA(); r2.printA(); r2.printB();将会发生错误的一行删除;
A *p=&a; p->printA(); p=&b; p->printA(); p->printB();将会发生错误的一行删除;
int getA(){return a;}在main函数前增加一般函数:
void f(A x) { cout<<"aaaaah, my a: "<<x.getA()<<endl; }main函数中指定部分为:
f(a); f(b);你认为输出结果是:______________________
#include <iostream> using namespace std; class B { public: B(int x=0) { X=x; cout<<"B("<<x<<")\n"; } ~B() { cout<<"~B()\n"; } void print() { cout <<X<< " "; } private: int X; }; class D: public B { public: D (int x, int y):B(x) { Y=y; cout<<"D("<<x<<","<<y<<")\n"; } ~D() { cout<<"~D()\n"; } void print() //与基类中的成员函数同名!这个冲突如何解决的?! { B::print(); cout <<Y<<endl; } private: int Y; }; int main() { D d(11,22); d.print(); return 0; }