21xrx.com
2025-03-15 12:35:35 Saturday
文章检索 我的文章 写文章
C++:在一个头文件中实现多个类
2023-07-04 13:00:55 深夜i     32     0
C++头文件 多个类 实现

C++是一种高级编程语言,它的特点是面向对象、高效、可靠性高。在C++中,一个类通常定义在一个头文件中,但也有时候需要在一个头文件中实现多个类。在本文中,我们将简单介绍在一个头文件中实现多个类的方法。

首先,创建头文件,然后在头文件中声明需要实现的多个类。例如,我们可以声明两个类:Person类和Student类,如下所示:

class Person {
public:
  Person(std::string name);
  void printName();
private:
  std::string mName;
};
class Student {
public:
  Student(std::string name, std::string id);
  void printInfo();
private:
  std::string mName;
  std::string mId;
};

在上述代码中,我们声明了两个类:Person类和Student类。Person类包含一个构造函数和一个打印名称的函数,Student类包括一个构造函数和一个打印个人信息的函数。

接下来,我们要在头文件中实现这些类。同样地,我们可以在头文件中实现这些类的函数,如下所示:

Person::Person(std::string name)
  mName = name;
void Person::printName()
  std::cout << "My name is " << mName << std::endl;
Student::Student(std::string name, std::string id)
  mName = name;
  mId = id;
void Student::printInfo()
  std::cout << "Student name: " << mName << std::endl;
  std::cout << "Student ID: " << mId << std::endl;

在上述代码中,我们在头文件中实现了Person类和Student类的函数。我们可以看到,实现这些函数的方法与单独实现类的函数的方法相同。

最后,我们可以在另一个源文件中包含头文件,并使用这些类和函数。例如,我们可以在一个main.cpp源文件中使用Person类和Student类:

#include "Person.h"
int main() {
  Person p("Tom");
  Student s("Jack", "123456");
  p.printName();
  s.printInfo();
  return 0;
}

恭喜,您已成功在一个头文件中实现了多个类。使用完整的代码可以在此处找到:

#include <iostream>
#include <string>
class Person {
public:
  Person(std::string name);
  void printName();
private:
  std::string mName;
};
Person::Person(std::string name)
  mName = name;
void Person::printName()
  std::cout << "My name is " << mName << std::endl;
class Student {
public:
  Student(std::string name, std::string id);
  void printInfo();
private:
  std::string mName;
  std::string mId;
};
Student::Student(std::string name, std::string id)
  mName = name;
  mId = id;
void Student::printInfo()
  std::cout << "Student name: " << mName << std::endl;
  std::cout << "Student ID: " << mId << std::endl;
int main() {
  Person p("Tom");
  Student s("Jack", "123456");
  p.printName();
  s.printInfo();
  return 0;
}

  
  

评论区