21xrx.com
2024-12-22 21:53:54 Sunday
登录
文章检索 我的文章 写文章
C++中类与类之间的调用关系
2023-07-04 06:54:18 深夜i     --     --
C++ 调用关系 继承 多态

在C++中,类是一种重要的程序组织方式,可以将数据和函数封装在一起。在一个程序中,可能会同时存在多个类,并且这些类之间存在着不同的调用关系。

类与类之间的调用关系有以下几种:

1. 继承关系

继承是一种从一个类派生出另一个类的方式,派生类可以继承基类的属性和方法。在继承关系中,派生类可以通过调用基类的函数来实现一些功能,这种调用方式被称为基类函数的直接调用。例如:


class Animal {

public:

  void eat()

    cout << "Animal eats" << endl;

  

};

class Cat: public Animal {

public:

  void meow()

    cout << "Cat meows" << endl;

  

};

int main() {

  Cat cat;

  cat.eat(); // 直接调用基类函数

  cat.meow();

  return 0;

}

在上面的代码中,Cat继承自Animal,可以直接调用Animal中的函数eat()。

2. 成员对象方式调用

在一个类中,可以定义其他类的对象作为其成员变量,这种调用方式被称为成员对象方式调用。例如:


class Student {

private:

  string name;

public:

  Student(string name)

    this->name = name;

  

  void study()

    cout << name << " is studying" << endl;

  

};

class Class {

private:

  Student student;

public:

  Class(Student student)

    this->student = student;

  

  void start() {

    student.study();

  }

};

int main() {

  Student student("Tom");

  Class cls(student);

  cls.start();

  return 0;

}

在上面的代码中,Class类中包含一个Student对象作为其成员变量,可以通过该对象调用Student中的函数study()。

3. 友元关系

友元是一种特殊的关系,可以让一个函数或类访问另一个类的私有成员。在友元关系中,一般在一个类中声明另一个函数或类为其友元,就可以让该函数或类访问该类的私有成员。例如:


class B;

class A {

private:

  int value;

public:

  A(int value)

    this->value = value;

  

  friend int get_value(B& b);

};

class B {

private:

  int other_value;

public:

  B(int other_value)

    this->other_value = other_value;

  

  friend int get_value(B& b); // 声明A为B的友元

};

int get_value(B& b) {

  A a(10);

  return b.other_value + a.value;

}

int main() {

  B b(20);

  cout << get_value(b) << endl;

  return 0;

}

在上面的代码中,B声明A为其友元,因此可以在函数get_value()中访问A的私有成员value。

综上所述,类与类之间有多种调用关系。熟悉这些调用关系,在程序开发中将会更加灵活和高效。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复