📜  C++中的继承和友谊(1)

📅  最后修改于: 2023-12-03 15:29:54.641000             🧑  作者: Mango

C++中的继承和友谊

C++是一种常见的面向对象编程语言,其中两个重要但有些容易混淆的概念是继承和友谊。这篇文章将向你介绍C++中的继承和友谊,帮助你更好地了解这两个概念。

继承

继承是一种对象间的关系,其中一个派生类继承了一个基类的特性。基类可以定义所有派生类共享的属性和方法,而派生类可以添加或修改这些属性和方法。

在C++中,继承通过派生类声明中使用关键字 publicprotectedprivate 来指定继承类型。示例代码如下所示:

class BaseClass {
  public:
    void baseMethod() {
      std::cout << "This is a base class method." << std::endl;
    }
  protected:
    int baseInt;
};

class DerivedClass : public BaseClass {
  public:
    void derivedMethod() {
      std::cout << "This is a derived class method." << std::endl;
    }
};

在这个例子中,class DerivedClass 公开继承了 class BaseClassclass DerivedClass 可以使用 baseMethod(),因为它被定义为公共方法。此外,class DerivedClass 可以访问 int baseInt,因为它被定义为受保护的成员。

派生类还可以重写或覆盖基类的方法。示例代码如下所示:

class BaseClass {
  public:
    void baseMethod() {
      std::cout << "This is a base class method." << std::endl;
    }
};

class DerivedClass : public BaseClass {
  public:
    void baseMethod() {
      std::cout << "This is an overridden derived class method." << std::endl;
    }
};

在这个例子中,class DerivedClass 重写了 baseMethod()。当调用 baseMethod() 时,将使用派生类中的实现。

友谊

友谊是一种允许类中的其他类或函数访问其私有成员的机制。在C++中,可以使用 friend 关键字将类或函数声明为友元。

示例代码如下所示:

class MyClass {
  private:
    int privateInt;
  public:
    friend void friendFunction(MyClass &myClass);
};

void friendFunction(MyClass &myClass) {
  myClass.privateInt = 42;
}

在这个例子中,friendFunction() 被声明为 class MyClass 的友元。因此,在 friendFunction() 中可以访问 MyClass 的私有成员变量。

总结

继承和友谊是在C++中用于建立对象关系的两个重要概念。继承可以通过派生类继承所有基类共享的属性和方法,而友谊则允许类中的其他类或函数访问其私有成员。通过正确使用这两个概念,你可以更好地设计你的C++程序。