C++单继承与多继承的区别

C++单继承与多继承的区别

单一继承: 单一继承是一种派生类只从一个基类继承公共、私有或保护属性的方式。在单一继承中,派生类使用单个基类的特征或成员。根据在继承父类或基类时指定的访问说明符,这些基类成员可以由派生类或子类访问。

C++单继承与多继承的区别

语法:

Class DerivedClass_name : Access-specifier Base_Class
{
    //Class's Body 
}; 

单一继承示例:

#include<iostream>
using namespace std;
class A {
public:
    int k = 1000;
    float salary = 80000;
};
class B : public A {
public:
    float bonus = 8000;
    void ts()
    {
        cout<<"Total salary.."<<(salary + bonus)<<endl;
    }
};
int main()
{
    B b1;
    cout<<"Salary:"<<b1.salary<<endl;
    cout<<"Bonus:"<<b1.bonus<<endl;
    b1.ts();
    return 0;
}  

输出:

Salary: 80000
Bonus: 8000
Total salary..88000 

在这个例子中,A是基类或父类,B是派生类或子类。

多重继承: 多重继承是指派生类获得两个或更多基类的方式。在多重继承中,允许派生类使用继承的基类的联合特征。每个基类通过通知每个基类单独的访问说明符被派生类继承。根据在继承父类或基类时指定的访问说明符,这些基类成员可以由派生类或子类访问。

C++单继承与多继承的区别

// 例子:
#include<iostream>
using namespace std;
 
class A
{
    protected:
    int a;
    public:
        void set_A()
        {
            cout<<"Enter the Value of A=";
            cin>>a;

        }
        void disp_A()
        {
            cout<<endl<<"Value of A="<<a;
        }
};
 
 
class B: public A
{
    int b,p;
    public:
        void set_B()
        {
            set_A();
            cout<<"Enter the Value of B=";
            cin>>b;
        }

        void disp_B()
        {
            disp_A();
            cout<<endl<<"Value of B="<<b;
        }

        void cal_product()
        {
            p=a*b;
            cout<<endl<<"Product of "<<a<<" * "<<b<<" = "<<p;
        }

};
 
main()
{
    B _b;
    _b.set_B();
    _b.cal_product();
     
    return 0;
}  

输出:

Enter the Value of A= 5
5
Enter the Value of B= 9
9

Product of 5 * 9 = 45
// 示例:
#include<iostream>
using namespace std;
 
class A
{
    protected:
    int a;
    public:
        void set_A(int x)
        {
             a=x;           
        }
        void disp_A()
        {
            cout<<endl<<"A的值 ="<<a;
        }
};
 
class B: public A
{
    int b,p;
    public:
        void set_B(int x,int y)
        {
            set_A(x);
            b=y;
        }
         
        void disp_B()
        {
            disp_A();
            cout<<endl<<"B的值 ="<<b;
        }
         
        void cal_product()
        {
            p=a*b;
            cout<<endl<<"a和b的乘积是 "<<a<<" * "<<b<<" = "<<p;
        }
         
};
 
main()
{
    B _b;
    _b.set_B(4,5);
    _b.cal_product();
     
    return 0;
}  

输出

a和b的乘积是4 * 5 = 20

语法:

class 派生类名 : 访问修饰符 基类名1, 访问修饰符 基类名2
{
    // 类的主体 
};

多继承的示例:

#include<iostream>
using namespace std;
class A {
public:
    float salary = 80000;
};
 
class B {
public:
    float bonus = 8000;
};
 
class C : public A, public B {
public:
    void ts()
    {
        cout<<"总工资.."<<(salary + bonus)<<endl;
    }
};
int main()
{
    C b1;
    b1.ts();
    return 0;
}  

输出:

总工资..88000

在这个示例中,A和B是基类,C是派生类。

// 示例:
 
#include <iostream> 
using namespace std; 
class A 
{ 
    protected: 
     int a; 
    public: 
    void get_a(int n) 
    { 
        a = n; 
    } 
}; 
   
 
class B 
{ 
    protected: 
    int b; 
    public: 
    void get_b(int n) 
    { 
        b = n; 
    } 
}; 
 
class C : public A,public B 
{ 
   public: 
    void display() 
    { 
        cout << "a的值:" <<a<< endl; 
        cout << "b的值:" <<b<< endl; 
        cout<<"a和b的乘积是:"<<a*b; 
    } 
}; 
 
int main() 
{ 
   C c; 
   c.get_a(10); 
   c.get_b(20); 
   c.display(); 
   
    return 0; 
}  

输出

a的值:10
b的值:20
a和b的乘积是:200

单重继承与多重继承的区别:

序号 单一继承 多重继承
1. 单一继承是指派生类只继承一个基类。 而多重继承是指派生类继承两个或者更多的基类。
2. 在单一继承中,派生类使用单个基类的特征。 而在多重继承中,派生类综合使用所继承的多个基类的特征。
3. 与多重继承相比,单一继承的运行时间更短,因为开销更小。 而多重继承的运行时间更长,因为开销更大。
4. 单一继承更接近于专业化。 相比之下,多重继承更接近于概括化。
5. 单一继承的实现方式为 Class DerivedClass_name : access_specifier Base_Class{}; 。 而多重继承的实现方式为 Class DerivedClass_name : access_specifier Base_Class1, access_specifier Base_Class2, ….{}; 。
6. 单一继承相对于多重继承更加简单。 相比之下,多重继承相对于单一继承更加复杂。
7. 单一继承可以在任何编程语言中实现。 C++支持多重继承,但是多重继承不能在任何编程语言中实现(例如,C#、Java不支持多重继承)。
8. 单一继承构建继承树。 多重继承构建了继承有向无环图(DAG)。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程