c++ 29 继承一
来源:互联网 发布:有什么女装淘宝店铺 编辑:程序博客网 时间:2024/05/06 06:07
简单的一个public继承。
#include <iostream>using namespace std; //代码重用 两个方式//组合、将一个类作为另一个类的对象成员 委托//继承class Base{public:int x_;protected:int y_;private:int z_;};//派生类公有继承基类class PublicInherit:public Base{public:void Test(){x_=10;y_=20;//保护的成员可以在派生类中访问//z_=30;//这行代码编译无法通过,z_是私有成员,在类外部是不能访问的。}private:int a_;};int main(void){Base b;b.x_=30;//b.y_=40;//编译不通过,类外部是不能访问保户的成员的。 return 0;}
代码示例:
#include <iostream>using namespace std; //代码重用 两个方式//组合、将一个类作为另一个类的对象成员 委托//继承class Base{public:int x_;protected:int y_;private:int z_;};//派生类公有继承基类class PublicInherit:public Base{public:void Test(){x_=10;y_=20;//保护的成员可以在派生类中访问 //z_=30;//这行代码编译无法通过,z_是私有成员,在类外部是不能访问的。}private:int a_;};class PrivateInherit:private Base{public:void Test(){ x_=10;y_=20;}};int main(void){Base b;b.x_=30;//b.y_=40;//编译不通过,类外部是不能访问保户的成员的。PrivateInherit p0;//p0.x_;//不可访问私有PublicInherit p1;p1.x_; return 0;}
对于结构体来说,没有指定继承方式,默认是公有继承,对于类来说,没有指定,默认是私有继承
对基类数据成员的重定义:
#include <iostream>using namespace std;class Base{public:int x_;Base():x_(0){}int GetBaseX() const{return x_;}};//派生类公有继承基类class Derived:public Base{ public: Derived():x_(0) { } int GetDerivedX() const { return x_; } int x_;//派生类也定义了x_};int main(void){Derived d;d.x_=10; //这个时候访问的应该是派生类自身的x_ 没有重定义的话,改变的就是基类的xcout<<d.GetBaseX()<<endl;//打印结构0cout<<d.GetDerivedX()<<endl;//打印 结构10 return 0;}
对基类成员函数的重定义(访问基类的成员)
#include <iostream>using namespace std;class Base{public:int x_;Base():x_(0){}int GetBaseX() const{return x_;}void Show(){ cout<<"Base ...Show"<<endl;}};//派生类公有继承基类class Derived:public Base{ public: Derived():x_(0) { } int GetDerivedX() const { return x_; } int x_;//派生类也定义了x_ void Show(){ cout<<"Derived ...Show"<<endl;}void Show(int n){ cout<<"Derived ...Show"<<n<<endl;}};int main(void){Derived d;d.x_=10; //这个时候访问的应该是派生类自身的x_ d.Base::x_=5; //访问基类的成员cout<<d.GetBaseX()<<endl;//打印结构0cout<<d.GetDerivedX()<<endl;//打印 结构10 d.Show();//没有重定义,调用的是基类 而如果派生类中定义了一个带参数的Show,不能编译通过 d.Base::Show();//访问基类的函数 return 0;}
0 0
- c++ 29 继承一
- 29 继承(一)
- 复习一:C的OOP-基本继承
- Objective-C学习笔记九:继承一
- 继承《一》
- C语言面向对象编程(一):封装与继承
- C语言面向对象编程(一):封装与继承
- C语言面向对象编程(一):封装与继承
- C语言面向对象编程(一):封装与继承
- C语言面向对象编程(一):封装与继承
- c继承
- C++----------------继承
- 【c#】继承
- C++:继承
- C++::继承
- [C++]继承
- 【C++】继承
- 【C#】继承
- webapp学习之1--配置
- UVa10264 - The Most Potent Corner
- 第十三周项目1——2 反序输出和数组加倍
- 1143Tri Tiling --递推
- C++程序的内存布局
- c++ 29 继承一
- 深入理解C程序内存布局
- Google Protocol Buffer 的使用和原理(转载)
- Objective - C 1. 类和对象
- 使用Myeclipse实现快速调试
- Linux makefile 教程 非常详细,且易懂
- STL中用ERASE()方法遍历删除元素
- 指针和引用的区别
- 自己写个简单的栈