C++面试总结

来源:互联网 发布:mac打不开google 编辑:程序博客网 时间:2024/05/19 03:26

1.面向对象的基本思想?

2.面向对象的两方面特征?分别是什么含义?

3.构造函数的调用顺序?

当建立一个对象时,首先调用基类的构造函数,然后调用下一个派生类的构造函数,依次类推,直至到达派生类次数最多的派生次数最多的类的构造函数为止。简而言之,对象是由“底层向上”开始构造的。因为,构造函数一开始构造时,总是要调用它的基类的构造函数,然后才开始执行其构造函数体,调用直接基类构造函数时,如果无专门说明,就调用直接基类的默认构造函数。在对象析构时,其顺序正好相反。

①子类和父类调用顺序

#include<iostream>using namespace std;class Base  //子类{public:    Base();};Base::Base(){    cout<<"调用 Base 构造函数"<<endl;}class Drived:public Base  //父类{public:    Drived();};Drived::Drived(){    cout<<"调用 Drived 构造函数"<<endl;}int main(){    Drived Temp;    return 0;}
结果:

调用 Base 构造函数

调用 Drived 构造函数

由输出结果我们可以看到,先调用的是base类的构造函数,再调用了drived类的构造函数。

②成员类构造函数调用顺序

#include<iostream>using namespace std;class Son{public:    Son();};Son::Son(){    cout<<"调用Son构造函数"<<endl;}class Family  //父类{public:    Family();    Son jack;};Family::Family(){    cout<<"调用Family构造函数"<<endl;}int main(){    Family Temp;    return 0;}
结果:

调用Son构造函数

调用Faminly构造函数

③类继承基类并且包含成员类构造函数

#include<iostream>using namespace std;class Name{public:    Name();};Name::Name(){    cout<<"调用Nmme构造函数"<<endl;}class Son{public:    Son();};Son::Son(){    cout<<"调用Son构造函数"<<endl;}class Family:public Son //父类{public:    Family();    Name familyName;};Family::Family(){    cout<<"调用Family构造函数"<<endl;}int main(){    Family Temp;    return 0;}

结果:

调用Son构造函数

调用Name构造函数

调用Family构造函数

总结:

总结下来,我们必须明确的是当一个类继承与基类,并且自身还包含有其他类的成员对象的时候,构造函数的调用顺序为:调用基类的构造函数->调用成员对象的构造函数->调用自身的构造函数。


4.类和对象之间的关系?


5.构造函数和析构函数是否可以重载?为什么?


6.delete与delete[]区别?


7.多态的两个主要作用?


8.类成员函数的重载、覆盖和隐藏的区别?


9.面向对象几个基本特征?



原创粉丝点击