一个C++数组程序,很短,但是它是怎么赋值到数组里的呢?

来源:百度知道 编辑:UC知道 时间:2024/07/05 14:00:35
#include <iostream.h>
#include <string.h>

class Employee
{
public:
Employee(void);
void show_employee(void) { cout << name << endl; };

private:
char name[256];
long id;
};

Employee::Employee(void)
{
static int index = 0;

switch (index++) {
case 0: strcpy(Employee::name, "Kris");
Employee::id = 1;
break;
case 1: strcpy(Employee::name, "Happy");
Employee::id = 2;
break;
};
}

void main(void)
{
Employee workers[2];

workers[0].show_employee();
workers[1].show_employee();
}
本人愚钝麻烦解释详细些,不胜感激~!
我知道index等于0,再等于1,可是怎么就到数组里了呢?输出workers[0].show_employee();
workers[1].show_employee(); 怎么就会显示出来了呢?index跟数组下标有什么关系a?

Employee::Employee(void)
{
static int index = 0;

switch (index++) {
case 0: strcpy(Employee::name, "Kris");
Employee::id = 1;
break;
case 1: strcpy(Employee::name, "Happy");
Employee::id = 2;
break;
};

构造函数里边这个是个静态变量,长期有效的。
所以没构造一次这个静态变量都会+1.

Employee workers[2];
这里定义的虽然是一个大小为2的数组,但是它本质上还是两个对象。
因为有构造函数,所以编译器会帮你把这两个元素从前到后依次给你初始化了。

case 1: strcpy(Employee::name, "Happy");
这个strcpy无非拷贝字符串罢了。

void show_employee(void) { cout << name << endl; };

这是用来输出的函数。

case 0: strcpy(Employee::name, "Kris");

case 1: strcpy(Employee::name, "Happy");

你没看到strcpy吗?

static int index = 0; 定义静态变量
第一次switch (index++) 时 index等0,name赋Kris
index加1
第二次switch (index++) 时 index等1,name赋Happy
然后index再加1

我晕~~短你个头~~~把我骗进来~~~在这里你懂什么叫“很短”吗??没错你的程序才几寸长~