zoukankan      html  css  js  c++  java
  • C++共有型派生(public)和私有型派生的区别(private)

    子类公有派生基类后可以访问基类中的公有成员(变量和方法),不能访问私有成员。
    使用子类创建对象后,该对象可以访问基类的公有成员(可在类体外访问)。
    子类私有派生基类后可以访问基类中的公有成员、保护成员(变量和方法),不能访问私有成员。
    使用子类创建对象后,该对象不能访问基类的公有成员(不能在类体外访问)。

    例子

    共有继承
    #include<iostream>
    using namespace std;
    class CEmployee
    {
    private:
    	int m_ye;
    public:
    	int m_ID;
    	char m_Name[128];
    	char m_Depart[128];
    	CEmployee()
    	{
    		memset(m_Name,0,128);
    		memset(m_Depart,0,128);
    	}
    void OutputName()
    {
    	cout<<"员工姓名:"<<m_Name<<endl;
    }
    };
    
    class COperator:public CEmployee
    {
    public:
    	char m_Password[128];
    	bool Login()
    	{
    		if(strcmp(m_Name,"MR")==0 &&
    		strcmp(m_Password,"KJ")==0)
    		{
    			cout<<"登录成功"<<endl;
    			return true; 
    		}
    		else
    		{
    			cout<<"登陆失败"<<endl;
    			return false;	
    		}
    	}
    };
    int main(int argc, char *arg[])
    {
    	COperator optr;
    	strcpy(optr.m_Name,"MR");		//公有继承可以访问基类公有成员
    	strcpy(optr.m_Password,"KJ");	//公有继承可以访问基类公有成员
    	optr.Login();
    	optr.OutputName();				//公有继承可以访问基类公有成员
    	return 0;
    }
    
    共有继承
    共有继承
    #include<iostream>
    using namespace std;
    class CEmployee
    {
    private:
    	int m_ye;
    public:
    	int m_ID;
    	char m_Name[128];
    	char m_Depart[128];
    	CEmployee()
    	{
    		memset(m_Name,0,128);
    		memset(m_Depart,0,128);
    	}
    void OutputName()
    {
    	cout<<"员工姓名:"<<m_Name<<endl;
    }
    };
    
    class COperator:private CEmployee
    {
    public:
    	char m_Password[128];
    	bool Login()
    	{
    		if(strcmp(m_Name,"MR")==0 &&
    		strcmp(m_Password,"KJ")==0)
    		{
    			cout<<"登录成功"<<endl;
    			return true; 
    		}
    		else
    		{
    			cout<<"登陆失败"<<endl;
    			return false;	
    		}
    	}
    };
    int main(int argc, char *arg[])
    {
    	COperator optr;
    	strcpy(optr.m_Name,"MR");		//出错
    	strcpy(optr.m_Password,"KJ");	//出错
    	optr.Login();
    	optr.OutputName();				//出错
    	return 0;
    }
    
  • 相关阅读:
    MYSQL数据丢失讨论【转】
    MySQL 5.6 新功能之 Index Condition Pushdown (ICP)
    MySQL Binlog 【ROW】和【STATEMENT】选择
    MySQL open_files_limit相关设置
    Python颜色输出和random的学习
    Python 之 【二进制、十进制、八进制、十六进制 】之间的转换【转】
    初识 MySQL 5.5 新功能、参数
    Oracle Inventory关键词解释
    plsql 输出当月的所有日期
    ORA29279: SMTP permanent error: 550 XXX@XX.com... No such user
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860136.html
Copyright © 2011-2022 走看看