ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++构造

2021-11-19 18:58:48  阅读:120  来源: 互联网

标签:Student Show gender 构造 C++ student strlen name


C++一些构造,老是忘记

**
**

// work05_01.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
using namespace std;
//(重点掌握)给出学生类的声明如下:
class Student
{
public:
    enum Gender { Male, Female }; //枚举类型,性别
    //声明友元函数,用于将枚举类型输出文本形式  
    friend std::ostream& operator<<(std::ostream& os, Gender gender);//友元函数要在class外定义
    Student()                                                           //无参数构造函数  
    {
        name_ = NULL;
        gender_ = Male;
    }
    Student(const char* name, Gender gender) //带参数构造函数  
    {
        name_ = new char[strlen(name)+1];
        strcpy_s(name_,strlen(name)+1,name);
        gender_ = gender;
    }
    Student(const Student& student) //拷贝构造函数  
    {
        name_ = new char[strlen(student.name_)+1];
        strcpy_s(name_, strlen(student.name_)+1,student.name_);

    }
    Student& operator= (const Student& student)                                 //赋值运算符  
    {
        if (this == &student)
        {
            return *this;
        }
        delete[] name_;
        name_ = new char[strlen(student.name_) + 1];
        strcpy_s(name_, strlen(student.name_) + 1, student.name_);
    }

    ~Student()                                                                  //析构函数,释放内存 
    {
        if (name_ != NULL) {
            delete[] name_;
        }
    }
    void Show() const                                                            //常成员函数用于显示学生姓名和性别  
    {
        std::cout << "名字:" << name_ << "\n性别:" << gender_ << "\n\n";
    }
    
private:
    char* name_;    //名字  
    Gender gender_; //性别  
};

std::ostream& operator<<(std::ostream& os, Student::Gender gender)
{
    if (gender == Student::Female)
    {
        os << "Female";
    }
    else {
        os << "Male";
    }
    return os;
}

//完成学生类的实现,并利用下面给出的main函数测试所有的成员函数。(可以尝试在常成员函数中修改成员数据,观察编译器是否报错)。
int main()
{
    Student s1;
    Student s2("Nicolas ZhaoSi", Student::Gender::Male);
    Student s3("Jason GuoDa Statham", Student::Gender::Male);
    Student s4(s2);
    s1 = s3;
    s1.Show();
    s2.Show();
    s3.Show();
    s4.Show();

}


标签:Student,Show,gender,构造,C++,student,strlen,name
来源: https://blog.csdn.net/unhere123/article/details/121428979

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有