| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1196 人关注过本帖
标题:这个题不太理解
只看楼主 加入收藏
我叫赫卡忒
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-9-22
结帖率:50%
收藏
已结贴  问题点数:10 回复次数:6 
这个题不太理解
实现Student类,要求该类对象在创建时,可以自动生成学号
Student  s1 ;               //学号1
Student  stu[10];      //学号将依次是2……11
2016-10-30 21:18
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:2 
作为一个类,在不传入参数的情况下要让它自动生成学号实在是不科学。当然还是可以实现,用一个全局变量来记录上一个实例的学号是多少就行。
short n=1;
class Student
{
private:
    short number;
public:
    Student(){number=n++;}
}
这样应该可以了吧。试一下看
2016-10-30 21:26
我叫赫卡忒
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-9-22
收藏
得分:0 
不可以直接初始化吗?用含参的构造函数
2016-10-30 22:26
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:5 
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;
}

2016-10-31 08:26
我叫赫卡忒
Rank: 1
来 自:北京
等 级:新手上路
帖 子:19
专家分:0
注 册:2016-9-22
收藏
得分:0 
呃……我不太理解这个代码
2016-10-31 13:17
Jamescgm
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-11-1
收藏
得分:0 
回复 4楼 rjsp
在调试的时候显示这个
图片附件: 游客没有浏览图片的权限,请 登录注册
请问还需要引用什么东西吗?
2016-11-01 15:55
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:3 
可以定义一个带参的构造函数,定义一个该学生类的指针数组,然后就可以循环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编辑过]

2016-11-01 17:52
快速回复:这个题不太理解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018437 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved