21xrx.com
2024-12-22 20:15:49 Sunday
登录
文章检索 我的文章 写文章
如何在C++中在一个类中创建另一个类的数组?
2023-07-11 06:43:08 深夜i     --     --
C++ 数组 创建 嵌套

在C++中,我们经常需要在一个类中创建另一个类的数组。这是一个非常常见的需求,特别是在面向对象编程中。虽然看起来很简单,但实际上有很多细节需要注意。下面是如何在C++中在一个类中创建另一个类的数组的详细说明。

第一步是定义一个类。在这里,我们定义一个叫做“Person”的类,这个类有两个私有成员变量,分别是姓名和年龄。

class Person {

private:

  string name;

  int age;

public:

  Person(string n, int a)

    name = n;

    age = a;

  string getName()

    return name;

  void setName(string n)

    name = n;

  int getAge()

    return age;

  void setAge(int a)

    age = a;

};

在这个类中,我们定义了一个构造函数,它接受两个参数,分别是姓名和年龄。我们还定义了四个方法来获取和设置姓名和年龄。

第二步是在另一个类中创建一个Person类对象数组。在这里,我们定义一个叫做“Group”的类,它有一个私有成员变量,即Person类对象数组。我们还定义了一个构造函数,它接受一个整数参数,表示Person类对象数组的大小,然后动态分配内存,并初始化Person类对象数组。

class Group {

private:

  Person* people;

public:

  Group(int size) {

    people = new Person[size];

    for (int i = 0; i < size; i++) {

      people[i] = Person("", 0);

    }

  }

  ~Group() {

    delete[] people;

  }

  Person& operator[](int index) {

    return people[index];

  }

};

在这个类中,我们定义了一个构造函数,它接受一个整数参数,表示Person类对象数组的大小。我们使用new来动态分配内存,然后使用循环初始化Person类对象数组。我们还定义了一个析构函数,用于释放动态分配的内存。最后,我们重载了[]运算符,以便我们可以像使用数组一样访问Person类对象数组。

第三步是测试代码。在下面的测试代码中,我们创建了一个Group类对象,它有3个Person类对象。我们可以使用[]运算符像访问数组一样访问Person类对象数组,从而获取或设置姓名和年龄。

int main() {

  Group group(3);

  group[0].setName("Tom");

  group[0].setAge(20);

  group[1].setName("Jerry");

  group[1].setAge(18);

  group[2].setName("Mike");

  group[2].setAge(22);

  for (int i = 0; i < 3; i++) {

    cout << group[i].getName() << " is " << group[i].getAge() << " years old." << endl;

  }

  return 0;

}

在这个测试代码中,我们首先创建了一个有3个Person类对象的Group类对象。然后,我们使用[]运算符为每个Person类对象设置姓名和年龄。最后,我们使用循环打印每个Person类对象的姓名和年龄。

总的来说,创建一个类中的另一个类的数组需要注意一些细节,特别是在动态分配内存时。但一旦你掌握了这个技巧,你就可以在C++中轻松地创建任何类的数组了。

  
  

评论区

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