继承中的构造函数
基类的构造函数不被继承,需要在派生类中自行声明。
声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化由基类完成。
1.在这里先介绍一个简单的单一继承时的构造函数(后面几篇我会继续跟新多继承的构造函数)
{
本类成员初始化赋值语句;
};
举例:
#include<iostream.h>
class B{
public:
B( );
B(int i);
~B( );
void Print( ) const;
private:
int b;
};
B::B( )
{
b=0;
cout<<"B's default constructor called."<<endl;
}
B::B(int i)
{
b=i;
cout<<"B's constructor called." <<endl;
}
B::~B( )
{
cout<<"B's destructor called."<<endl;
}
void B::Print( ) const
{
cout<<b<<endl;
}
class C:public B
{
public:
C( );
C(int i,int j);
~C( );
void Print( ) const;
private:
int c;
};
C::C( )
{
c=0;
cout<<"C's default constructor called."<<endl;
}
C::C(int i,int j):B(i)
{
c=j;
cout<<"C's constructor called."<<endl;
}
C::~C( )
{
cout<<"C's destructor called."<<endl;
}
void C::Print( ) const
{
B::Print( );
cout<<c<<endl;
}
int main( )
{
C obj(5,6);
obj.Print( );
return 0;
}
答案:B’s constructor called.
C’s constructor called.
5
6
C’s destructor called
B’s destructor called
基类的构造函数不被继承,需要在派生类中自行声明。
声明构造函数时,只需要对本类中新增成员进行初始化,对继承来的基类成员的初始化由基类完成。
1.在这里先介绍一个简单的单一继承时的构造函数(后面几篇我会继续跟新多继承的构造函数)
格式:
派生类名::派生类名(基类所需的形参,本类成员所需的形参):基类名(参数){
本类成员初始化赋值语句;
};
举例:
#include<iostream.h>
class B{
public:
B( );
B(int i);
~B( );
void Print( ) const;
private:
int b;
};
B::B( )
{
b=0;
cout<<"B's default constructor called."<<endl;
}
B::B(int i)
{
b=i;
cout<<"B's constructor called." <<endl;
}
B::~B( )
{
cout<<"B's destructor called."<<endl;
}
void B::Print( ) const
{
cout<<b<<endl;
}
class C:public B
{
public:
C( );
C(int i,int j);
~C( );
void Print( ) const;
private:
int c;
};
C::C( )
{
c=0;
cout<<"C's default constructor called."<<endl;
}
C::C(int i,int j):B(i)
{
c=j;
cout<<"C's constructor called."<<endl;
}
C::~C( )
{
cout<<"C's destructor called."<<endl;
}
void C::Print( ) const
{
B::Print( );
cout<<c<<endl;
}
int main( )
{
C obj(5,6);
obj.Print( );
return 0;
}
答案:B’s constructor called.
C’s constructor called.
5
6
C’s destructor called
B’s destructor called