下列程序的运行结果为:#include<iostream> #include<string> using namespace std ; class A_class { char name[20] ; public : void put_name( char * s ) { strcpy( name, s ) ; } void show() { cout << name << "\n" ; } }; class B_class : public A_class { char phone_num[ 20 ] ; public : void put_phone( char * num ) { strcpy ( phone_num , num ) ; } void show() { cout << phone_num << "\n" ; } }; int main() { B_class B_obj ; B_class * B_p ; A_class A_obj; //B_p=&A_obj; //出错,不用用派生类指针指向派生类对象 B_p = & B_obj ; B_p-> put_phone ( "5555_12345678" ); B_p -> show() ; B_p -> put_name( "Chen ming" ) ; B_p-> A_class::show(); ((A_class*)B_p )-> show() ; }
时间: 2024-03-26 10:36:36 浏览: 68
使用include <iostream>时一定要加using namespace std
程序会出现编译错误,因为在B_class中,put_phone和show函数是新增加的函数,而put_name和show函数是从A_class中继承过来的。所以在使用B_class指针指向A_class对象时,无法调用B_class中新增加的函数。正确的做法是将B_p指针指向B_obj对象,然后通过B_p指针调用B_class中新增加的函数和继承自A_class的函数。最后,通过将B_p强制转换为A_class类型的指针,可以调用A_class中的函数。
阅读全文