编程论坛
注册
登录
编程论坛
→
C++教室
这个题不太理解
我叫赫卡忒
发布于 2016-10-30 21:18, 1429 次点击
实现Student类,要求该类对象在创建时,可以自动生成学号
Student s1 ; //学号1
Student stu[10]; //学号将依次是2……11
6 回复
#2
yangfrancis
2016-10-30 21:26
作为一个类,在不传入参数的情况下要让它自动生成学号实在是不科学。当然还是可以实现,用一个全局变量来记录上一个实例的学号是多少就行。
short n=1;
class Student
{
private:
short number;
public:
Student(){number=n++;}
}
这样应该可以了吧。试一下看
#3
我叫赫卡忒
2016-10-30 22:26
不可以直接初始化吗?用含参的构造函数
#4
rjsp
2016-10-31 08:26
static
程序代码:
#include
<iostream>
class
Student
{
public
:
Student() : id_(++gid_)
{
}
private
:
size_t id_;
static
size_t gid_;
friend
std::ostream&
operator
<<( std::ostream& os,
const
Student& s );
};
size_t Student::gid_ =
0
;
std::ostream&
operator
<<( std::ostream& os,
const
Student& s )
{
return
os << s.id_;
}
using
namespace
std;
int
main(
void
)
{
Student s1;
Student stu[
10
];
cout
<< s1 <<
'
\n
'
;
for
( size_t i=
0
; i!=
sizeof
(stu)/
sizeof
(stu[
0
]); ++i )
cout
<< stu[i] <<
'
\n
'
;
return
0
;
}
#5
我叫赫卡忒
2016-10-31 13:17
呃……我不太理解这个代码
#6
Jamescgm
2016-11-01 15:55
回复 4楼 rjsp
在调试的时候显示这个
只有本站会员才能查看附件,请
登录
请问还需要引用什么东西吗?
#7
StadyC
2016-11-01 17:52
可以定义一个带参的构造函数,定义一个该学生类的指针数组,然后就可以循环new了
#include<stdio.h>
#include<stdlib.h>
struct student
{
public:
student(int num)
{
No = num;
}
~student()
{
}
void display()
{
printf("%d ", No);
}
protected:
int No;
};
int main(void)
{
student *stu[10];
int i = 0;
while(i != 10)
{
stu[i] = new student(i + 1);
stu[i]->display();
++i;
} //差不多就是这样
printf("\n");
i = 0;
while(i != 10)
{
delete stu[i];
++i;
} //释放全部申请的空间
return 0;
}
[此贴子已经被作者于2016-11-2 09:41编辑过]
1