面向对象程序设计-1 类和对象(更新中)

一、定义类 

知识点在注释里

//定义类
class Date
{
private:
    int year;
    int month;
    int day;
    //数据成员,默认为私有

public:
    Date(){}//不带参数的构造函数

    Date(int year,int month,int day)//带参数的构造函数
    {
        this->year=year;
        this->month=month;
        this->day=day;
    }

    /*这里可以缺省参数
    Date(int year=2000,int month=1,int day=1)//带参数的构造函数
    {
        this->year=year;
        this->month=month;
        this->day=day;
    }*/

    Date(const Date&t)  //拷贝构造函数,浅拷贝,系统默认会有
    {
        year=t.year;
        month=t.month;
        day=t.day;
    }
    /*  
        Date date1=(2004,6,5)
        Date date2;
        date2=date1;(错误)
        Date date2=date1;(正确)
        等号需要运算符重载才可以使用。
    */

    ~Date() //析构函数
    {
        cout<<"Distract"<<endl;     //当调用析构函数的时候会输出distract。
    }
    void print()    //普通成员函数
    {
        cout<<year<<"\t"<<month<<"\t"<<day<<endl;
    }

};

二、定义对象

普通对象

//普通对象
    Date d1(2004,6,5);
    Date d2;

对象数组

//对象数组 
Date arr[5];
 arr[0].print();

对象指针

//对象指针
    Date *p;
    p=&d1;
    p->print();
    (*p).print();

引用

//引用
    Date &w=d1;
    w.print();

动态对象创建

  //动态创建对象
    Date *q=new Date(2008,8,8);
    q->print();
    delete q;

--完整代码--

#include<iostream>
using namespace std;

//定义类
class Date
{
private:
    int year;
    int month;
    int day;
    //数据成员,默认为私有

public:
    Date():year(2000),month(1),day(1){}//不带参数的构造函数

    Date(int year,int month,int day)//带参数的构造函数
    {
        this->year=year;
        this->month=month;
        this->day=day;
    }

    /*这里可以缺省参数
    Date(int year=2000,int month=1,int day=1)//带参数的构造函数
    {
        this->year=year;
        this->month=month;
        this->day=day;
    }*/

    Date(const Date&t)  //拷贝构造函数,浅拷贝,系统默认会有
    {
        year=t.year;
        month=t.month;
        day=t.day;
    }
    /*  
        Date data1=(2004,6,5)
        Data data2;
        data2=data1;(错误)
        Data data2=data1;(正确)
        等号需要运算符重载才可以使用。
    */

    ~Date() //析构函数
    {
        cout<<"Distract"<<endl;     //当调用析构函数的时候会输出distract。
    }
    void print()    //普通成员函数
    {
        cout<<year<<"\t"<<month<<"\t"<<day<<endl;
    }

};

int main()
{
    //普通对象
    Date d1(2004,6,5);
    Date d2;

    //对象数组
    Date arr[5];
    arr[0].print();

    //对象指针
    Date *p;
    p=&d1;
    p->print();
    (*p).print();

    //引用
    Date &w=d1;
    w.print();

    //动态创建对象
    Date *q=new Date(2008,8,8);
    q->print();
    delete q;
    return 0;
}

相关推荐

  1. PTA--《面向对象程序设计》作业2-对象

    2024-06-09 16:16:01       33 阅读
  2. C++面向对象程序设计之类与对象1

    2024-06-09 16:16:01       34 阅读
  3. 面向对象程序设计

    2024-06-09 16:16:01       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 16:16:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 16:16:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 16:16:01       82 阅读
  4. Python语言-面向对象

    2024-06-09 16:16:01       91 阅读

热门阅读

  1. LLVM Cpu0 新后端7 第二部分 窥孔优化

    2024-06-09 16:16:01       34 阅读
  2. zookeeper集群安装

    2024-06-09 16:16:01       32 阅读
  3. Github 2024-06-09 php开源项目日报Top10

    2024-06-09 16:16:01       32 阅读
  4. C++做题

    C++做题

    2024-06-09 16:16:01      25 阅读
  5. axios的用法

    2024-06-09 16:16:01       33 阅读
  6. 大学编译器课程 编译原理与实践

    2024-06-09 16:16:01       28 阅读
  7. 智能合约中断言失败

    2024-06-09 16:16:01       36 阅读
  8. LeetCode题练习与总结:买卖股票的最佳时机--121

    2024-06-09 16:16:01       29 阅读