第十二周阅读项目(5)

来源:互联网 发布:阿里算法工程师p6待遇 编辑:程序博客网 时间:2024/06/07 03:45

问题及代码:

#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);    //此处加入代码1 }(a)      b=a;    a.printA();    b.printA();    b.printB();    return 0;运行结果:a:  2   b: 3a:  2   b: 3a:  2   b: 3    c: 4(b)     b=a;     a.printA();     b.printA();     b.printB(); 编译错误原因:基类a的值不可以赋给派生类b IDE中显示的错误:no match for 'operator=' in 'b=a'(c)     A &r1=a;     A &r2=b;     r1.printA();     r2.printA();     r2.printB(); 运行结果:     a:1    b:1     a:2    b:3 去掉的一行编译错误的原因:类A中没有成员c (d)     A *p=&a;     p->printA();     p=&b;     p->printA();     p->printB(); 运行结果:     a:1    b:1     a:2    b:3 那一行错误的原因:类A中没有成员c (e) 在class A中增加成员函数: int getA(){return a;} 在main函数前增加一般函数: void f(A x) {     cout<<"aaaaah, my a: "<<x.getA()<<endl; } main函数中指定部分为: f(a); f(b); 运行结果:      aaaaah, my a: 1      aaaaah, my a: 2 

学习总结:看了同学的解析还是有所理解的~~

0 0
原创粉丝点击