//继承时的构造函数:
//基类的构造函数不被继承,需要在派生类中自行声明。
//声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化由基类完成。
//派生类与基类的构造函数:
//1.当基类中声明有缺省形式的构造函数或未声明构造函数时,派生类构造函数的声明中可以省略对基类构造函数的调用。
//2.若基类中未声明构造函数,派生类中也可以不声明,全采用缺省形式构造函数。
//3.当基类声明有带形参的构造函数时,派生类也应声明带形参的构造函数,提供将参数传递给基类构造函数的途径。
//单一继承时的构造函数举例:
//派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(参数)
//{
// 本类成员初始化赋值语句;
//};
//构造函数的调用次序:
//1.调用基类构造函数,调用顺序按照它们被继承时声明的顺序(从左向右)。
//2.调用成员对象的构造函数,调用顺序按照它们在类中声明的顺序。
//3.派生类的构造函数体中的内容。
//继承时的析构函数
//1.析构函数也不被继承,派生类自行声明。
//2.声明方法与一般(无继承关系时)类的析构函数相同。
//3.不需要显式地调用基类的析构函数,系统会自动隐式调用。
//4.析构函数的调用次序与构造函数相反。
#include <iostream.h>
class B{
public:
B()
{
b=0;
cout<<"B's default constructor called."<<endl;
}
B(int i)
{
b=i;
cout<<"B's constructor called." <<endl;
}
~B()
{
cout<<"B's destructor called."<<endl;
}
void Print() const
{
cout<<b<<endl;
}
private:
int b;
};
class C:public B
{
public:
C()
{
c=0;
cout<<"C's default constructor called."<<endl;
}
C::C(int i,int j):B(i)//C(int i,int j)
{
c=j;
cout<<"C's constructor called."<<endl;
}
~C()
{
cout<<"C's destructor called."<<endl;
}
void Print() const
{
B::Print();
cout<<c<<endl;
}
private:
int c;
};
int main()
{
C obj(5,6);
obj.Print();
return 0;
}
C++学习笔记_2:单一继承时的构造函数与析构函数
最新推荐文章于 2022-12-26 13:11:26 发布