C++期末考试编程题及作答注意点

1、题目:定义一个表示人的类,每个人包含2个信息内容:姓名(zhangsan、lishun等)与年龄(20,21等),在该类中派生出一个表示学生的类Student,每名学生有学号和班级号。现在测试People(张三,18),Student1(lisi,19,2023001,"班级号:1"  )Student2(wangwu,20,2023002,"班级号:1"  )

写出完整代码并将结果运行出来

#include<iostream>
#include<string.h>
using namespace std;
class People 
{
  public:  //勿忘访问权限
  People(char*name,int age)
   {   m_name=new char[strlen(name) + 1];     //为数据m_name创建新的空间     //strlen函数的作用:  计算字符串的有效长度 
          strcpy(m_name,name);      //strcpy函数的作用:     将数据m_name从name中复制过来 
		  m_age=age;
          cout<< "People 构造:"<<m_name<<" "<<m_age<<endl;
   }
  ~People()
     {   
         cout<<"People 析构:"<<m_name <<" "<<m_age<<endl;
	     delete m_name;           //释放为数据m_name所创建的空间 
     }
   protected: 
      char*m_name; 
	  int m_age;
};
class Student:public People      //学生类   继承于   人类 
{
  public:  //勿忘访问权限 
  Student(char*name,int age,int stunum,char*clanum):People(name,age) 
	{
           m_stunum=stunum;     
		   m_clanum=new char[strlen(clanum)+1];   //为数据m_clanum创建新的空间 
	       strcpy(m_clanum,clanum);
           cout<<"Student构造: "<<m_stunum<<" "<<m_clanum<<endl;
    }
  ~Student() 
  {
           cout<<"Student析构: "<<m_stunum<<" "<<m_clanum<<endl;
	       delete m_clanum;       //释放为数据m_clanum所创建的空间 
  }
  private:
   int m_stunum;    //因为这里的学号是001形式的,所以我用字符串来定义数据类型
                    //当考试是学号开头并非是零时,则用整型定义数据类型 
   char*m_clanum;
};
int main()
{ 
    {People p("ZhangSan",18);}     //是否加大括号,与后续运行结果的顺序有关 
    cout<<endl;
    Student s1("Lisi",19,2023001,"班级号1");
    cout<<endl;
    Student s2("WangWu",20,2023002,"班级号2");
    cout<<endl;
    return 0;  //是否加system("pause"),与运行结果默认构造和析构的显示有关 
}

2、作答注意点:

&1中英文输入法的区别:双引号、分号 

&2访问权限:勿忘公有访问权限public

&3字符函数使用前的头文件#include<string.h>不能漏

&4创建动态变量后勿忘清除空间delete

&5是否加大括号会改变运行结果

&6在主函数结尾处是否加system("pause")会影响后续构造与析构的顺序

&6运行结果书写:要注意子类和父类的构造及析构顺序

 

 

 

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值