1.普通基类对象的初始化
#include<iostream>
using namespace std;
class day{
private:
int year;
int month;
public:
day();
day(int year1,int month1);
void display(){
cout<<"year="<<year<<" month="<<month<<endl;
}
};
//基类构造函数在类外实现
day::day(int year1,int month1){
year=year1;
month=month1;
}
int main(){
day A(2023,2);
A.display();
}
2.含对象成员类的对象初始化
构造函数初始化对象成员和基类继承成员的语法是相同的
#include<iostream>
using namespace std;
class day{
public:
int year;
int month;
public:
day(){}//构造函数在类中进行初始化 之前报错的原因 缺省构造函数只声明了 但并没有进行初始化
day(int year1,int month1);
void display(){
cout<<"year="<<year<<" month="<<month<<endl;
}
};
//基类构造函数在类外实现
day::day(int year1,int month1){
year=year1;
month=month1;
cout<<"day类构造函数初始化"<<endl;
}
class time:public day{
private:
day obj;
int hour;
int mintue;
public:
time(){}//缺省构造函数在类中进行初始化
time(int year1,int month1,int hour1,int mintue1);
void display1(){
cout<<"hour="<<hour<<" mintue="<<mintue<<endl;
}
};
time::time(int yy,int mm,int hh,int mi):obj(yy,mm){//这句是最重要的 初始化构造函数
hour=hh;
mintue=mi;
cout<<"time类构造函数初始化"<<endl;
}
int main(){
time A(2023,2,10,34);
return 0;
}
3.派生类对象用构造函数初始化
构造函数初始化对象成员和基类继承成员的语法是相同的
#include<iostream>
using namespace std;
class day{
public:
int year;
int month;
public:
day(){}
day(int year1,int month1);
~day(){
cout<<"day类对象销毁"<<endl;
}
int get_year(){
return year;
}
int get_month(){
return month;
}
};
day::day(int year1,int month1){
year=year1;
month=month1;
cout<<"day类构造函数初始化"<<endl;
}
class time:public day{
private:
int hour;
int mintue;
public:
time(){}
time(int hh,int mm);
time(int year1,int month1,int hour1,int mintue1);//主要形式
~time(){
cout<<"time类对象销毁"<<endl;
}
};
time::time(int yy,int mm,int hh,int mi):day(yy,mm){//初始化语法形式
hour=hh;
mintue=mi;
cout<<"time类构造函数初始化"<<endl;
}
time::time(int hh,int mm){
hour=hh;
mintue=mm;
}
int main(){
time A(2023,2,10,34);//派生类对象初始化 先基类构造,再派生类构造
int year1=A.get_year();
int month1=A.get_month();
cout<<"派生类调用构造函数初始化自身和从基类继承的对象成员:year="<<year1<<" month="<<month1<<endl;
return 0;//析构函数的调用次序与构造函数相反
}