C++ 继承
2016-01-26 00:00
323 查看
继承
l 继承规则: 若逻辑上B 是 A 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的 功 能和属性。
l 示例
Class person{
Public:
void fun();
private:
tring sex;
int old
};
Class chinese: public person
{
 
3ff0
; private:
string fuse;;
};
l 继承方式
1, public 继承 :子类可以访问基类非私有成员,继承后性质不变。
2, protected 继承 : 子类可以访问基类的非私有成员,继承后并将它们转换成 protected 性质。
3, private 继承, 子类可以访问基类的非私有成员,继承后并将它们转换成 privated 属性。
class A
{
public:
int a;
void fun();
protected:
int b;
private:
int c;
};
l 子类构造方式
先构造基类,再构造子类。基类成员变量的初始化由基类构造函数完成,除此之外,一般子类访问基类都是通过基类的成员函数去访问的(基类的私有成员子类 只能 通过基类的成员函数去访问)。
class A class B:public A
{ public: A(int x) {x=0 } { public: B(int x,int y) :A(x) {y=0 ;}
private: int x; private: int y;
} ; } ;
l 本课题目
分别构建学生类和研究生类,其中学生类的基本属性有姓名(私有成员),学分,学时(保护成员),学生类含以下成员函数,带参构造函数,析构函数,增加学时学分函数,求平均学分函数等;研究生类有职称属性,其它属性都由student类继承而来,研究生类需要增加以下成员函数,带参构造函数,析构函数,输出各属性值函数,要求 定义一个研究生对象分别调用各功能函数 。
#include<string >
#include<iostream >
using namespace std ;
class student // 学生类
{
public :
student ( string sname )
{
……
cout<<” 构造 student!”<<endl;
}
~ student()
{ cout<<” 析构 student!” ; }
void addcorse ( int hou , int sco ) //增加学时和学分
{
……
}
void getaverage () //平均学分
{
cout << "平均学时: " <<( double ) score / hour << endl ;
}
……
protected :
int hour ; //总学时
float score ; //总学分
private :
string name ;
};
class graduatestudent : public student// 研究生类
{
public :
graduatestudent
3ff0
( string name , string der ) ……
{
……
cout<<” 构造 graduatestudent !”<<endl;
}
~ graduatestudent ()
{ cout<<” 析构 graduatestudent !” ; }
void print ()
{
cout << "姓名: " << ……< < " 学时: " << …… < < " 学分: " << ……< < " 职称: " << …… < < endl ;
}
private :
string degree ;
};
void main ()
{
graduatestudent cai ( "wang" , "硕士 " );
cai . addcorse (20,40);
cai . getaverage ();
cai . print ();
}
l 继承规则: 若逻辑上B 是 A 的“一种”,并且 A 的所有功能和属性对 B 而言都有意义,则允许 B 继承 A 的 功 能和属性。
l 示例
Class person{
Public:
void fun();
private:
tring sex;
int old
};
Class chinese: public person
{
 
3ff0
; private:
string fuse;;
};
l 继承方式
1, public 继承 :子类可以访问基类非私有成员,继承后性质不变。
2, protected 继承 : 子类可以访问基类的非私有成员,继承后并将它们转换成 protected 性质。
3, private 继承, 子类可以访问基类的非私有成员,继承后并将它们转换成 privated 属性。
class A
{
public:
int a;
void fun();
protected:
int b;
private:
int c;
};
l 子类构造方式
先构造基类,再构造子类。基类成员变量的初始化由基类构造函数完成,除此之外,一般子类访问基类都是通过基类的成员函数去访问的(基类的私有成员子类 只能 通过基类的成员函数去访问)。
class A class B:public A
{ public: A(int x) {x=0 } { public: B(int x,int y) :A(x) {y=0 ;}
private: int x; private: int y;
} ; } ;
l 本课题目
分别构建学生类和研究生类,其中学生类的基本属性有姓名(私有成员),学分,学时(保护成员),学生类含以下成员函数,带参构造函数,析构函数,增加学时学分函数,求平均学分函数等;研究生类有职称属性,其它属性都由student类继承而来,研究生类需要增加以下成员函数,带参构造函数,析构函数,输出各属性值函数,要求 定义一个研究生对象分别调用各功能函数 。
#include<string >
#include<iostream >
using namespace std ;
class student // 学生类
{
public :
student ( string sname )
{
……
cout<<” 构造 student!”<<endl;
}
~ student()
{ cout<<” 析构 student!” ; }
void addcorse ( int hou , int sco ) //增加学时和学分
{
……
}
void getaverage () //平均学分
{
cout << "平均学时: " <<( double ) score / hour << endl ;
}
……
protected :
int hour ; //总学时
float score ; //总学分
private :
string name ;
};
class graduatestudent : public student// 研究生类
{
public :
graduatestudent
3ff0
( string name , string der ) ……
{
……
cout<<” 构造 graduatestudent !”<<endl;
}
~ graduatestudent ()
{ cout<<” 析构 graduatestudent !” ; }
void print ()
{
cout << "姓名: " << ……< < " 学时: " << …… < < " 学分: " << ……< < " 职称: " << …… < < endl ;
}
private :
string degree ;
};
void main ()
{
graduatestudent cai ( "wang" , "硕士 " );
cai . addcorse (20,40);
cai . getaverage ();
cai . print ();
}
相关文章推荐
- 如何理解c和c++ 的复杂类型声明
- C++星号倒三角问题
- C++--多态
- C/C++中的结构体(struct)
- 2012年第三届蓝桥杯C/C++程序设计本科B组省赛 奇怪的比赛(结果填空)
- C++学习 【4.2】 利用函数实现指定的功能---函数的调用
- C++学习 【4.3】 利用函数实现指定的功能---内置函数
- C++学习 【4.4】 利用函数实现指定的功能---函数的重载、函数模板、有默认参数的函数
- C++递归算法:我的理解
- C++复习(二)
- 用n个宽d,高h,深d的箱子打出高度最高的箱子,下面的箱子的宽度,高度和深度必须大于上面的箱子
- 20160122.CCPP详解体系(0001天)
- LeetCode 132. Palindrome Partitioning II (C++)
- 2013年第四届蓝桥杯B组(C/C++)预赛题目及个人答案(欢迎指正)
- C++怎么读写windows剪贴板的内容
- 用C++写一个UDP发送和接收程序
- c++中引用和指针的区别
- 在codeblocks中在project工程中如何成功的添加可执行的headers头文件,以Sale_data类为例
- C++封装AES加密类,(ECB + BASE64 + pkcs5padding),直接操纵和返回字符串
- Palindrom Numbers