C++求助(xiehao)

来源:百度知道 编辑:UC知道 时间:2024/06/24 07:03:02
这是有关构造函数的问题,不是一般在建立对象时就要调用构造函数吗?请谁帮我分析一下为什么在下面程序中不使用构造函数。只要分析一下这个就好了,不需要对其结果的分析。在此,对提供帮助的你表示非常的感谢!!!!!
#include<iostream>
#include<cstring>
using namespace std;
class Base{
char base_name[10];
public:
Base(){strcpy(base_name,"BASE");}
virtual char *my_name(){return base_name;}
char *class_name(){return base_name;}
};
class Derived:public Base{
char derived_name[10];
public:
Derived(){strcpy(derived_name,"DERIVED");}
char *my_name(){return derived_name;}
char *class_name(){return derived_name;}
};
void show_ptr(Base *p){
cout<<endl<<p->my_name()<<" "<<p->class_name();
}
void show_ref(Base &r){
cout<<endl<<r.my_name()<<" "<<r.class_name();
}
int main(){
Base bb;
Derived dd;
cout<<endl;
show_ptr(&bb);
show_ptr(&dd);

调用了,只不过class_name()不是虚函数,不能用基类指针类来体现出多态,仅仅是把返回基类的数据了

构造函数在对象定义就会被自动调用,
Base bb;
Derived dd;
这里就会调用。
当然派生类在调用时会先调用基类的构造函数。

这个小程序是演示多态性的。