陆续贴出学习C++时做的笔记
本博客(http://blog.csdn.net/livelylittlefish)贴出作者(三二一、小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正!
例1:观从派生类向基类传递参数
/**/
/************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase(int n)...{cout<<"the base class constructor!"<<endl; x=n; }
~CBase() ...{cout<<"the base class deconstructor!"<<endl;}
virtual void showx()...{cout<<"in the base class x = "<<x<<endl;} //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive(int n,int m):CBase(m)...{ cout<<"the derived class constructor!"<<endl; y=n; }
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void showy()...{ cout<<"in the derived class y = "<<y<<endl; }
} ;
main()
... { CDerive obj1(123,456);
obj1.showx();
obj1.showy();
CBase obj2(1234);
obj2.showx();
return 0;
}
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase(int n)...{cout<<"the base class constructor!"<<endl; x=n; }
~CBase() ...{cout<<"the base class deconstructor!"<<endl;}
virtual void showx()...{cout<<"in the base class x = "<<x<<endl;} //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive(int n,int m):CBase(m)...{ cout<<"the derived class constructor!"<<endl; y=n; }
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void showy()...{ cout<<"in the derived class y = "<<y<<endl; }
} ;
main()
... { CDerive obj1(123,456);
obj1.showx();
obj1.showy();
CBase obj2(1234);
obj2.showx();
return 0;
}
运行结果:
例2:调用派生类的构造函数时默认调用基类的构造函数
/**/
/************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase()...{ cout<<"the base class constructor!"<<endl; x=100;}
~CBase()...{cout<<"the base class deconstructor!"<<endl;}
virtual void showx()...{cout<<"in the base class x = "<<x<<endl; } //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive()...{cout<<"the derived class constructor!"<<endl; y=200;}
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void showy()...{ cout<<"in the derived class y = "<<y<<endl; }
} ;
main()
... {
CDerive obj1;
obj1.showx();
obj1.showy();
CBase obj2;
obj2.showx();
return 0;
}
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase()...{ cout<<"the base class constructor!"<<endl; x=100;}
~CBase()...{cout<<"the base class deconstructor!"<<endl;}
virtual void showx()...{cout<<"in the base class x = "<<x<<endl; } //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive()...{cout<<"the derived class constructor!"<<endl; y=200;}
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void showy()...{ cout<<"in the derived class y = "<<y<<endl; }
} ;
main()
... {
CDerive obj1;
obj1.showx();
obj1.showy();
CBase obj2;
obj2.showx();
return 0;
}
运行结果:
例3:派生类和基类同名成员函数的调用
/**/
/************************************************************************
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase()...{ cout<<"the base class constructor!"<<endl; x=100;}
~CBase()...{cout<<"the base class deconstructor!"<<endl;}
virtual void show()...{cout<<"in the base class x = "<<x<<endl;} //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive()...{cout<<"the derived class constructor!"<<endl; y=200;}
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void show()...{cout<<"in the derived class y = "<<y<<endl;}
} ;
main()
... {
CDerive obj1;
obj1.CBase::show();
obj1.show();
CBase obj2;
obj2.show();
return 0;
}
* 派生类的构造函数和析构函数
************************************************************************/
#include < IOSTREAM.H >
// 基类
class CBase
... {
int x;
public:
CBase()...{ cout<<"the base class constructor!"<<endl; x=100;}
~CBase()...{cout<<"the base class deconstructor!"<<endl;}
virtual void show()...{cout<<"in the base class x = "<<x<<endl;} //此处有没有virtual效果一样
} ;
// 派生类
class CDerive: public CBase
... {
int y;
public:
CDerive()...{cout<<"the derived class constructor!"<<endl; y=200;}
~CDerive()...{cout<<"the derived class deconstructor!"<<endl;}
void show()...{cout<<"in the derived class y = "<<y<<endl;}
} ;
main()
... {
CDerive obj1;
obj1.CBase::show();
obj1.show();
CBase obj2;
obj2.show();
return 0;
}
运行结果: