首页 未分类

类和对象

对建立好的类进行改进

对类的成员变量进行初始化

构造函数(Construction)

1.使用类的对象就像基本类型一样
2.基本规定:

构造函数的名称与类名相同;
不具有任何类型,也没有返回值;

3.构造函数需要设置为public;
4.构造函数不能被用户手动调用;

例如:

//file.h

#include <string>
#include <iostream>
#pragma once

using namespace std;

class MyTime 
{
public:

    //构造函数定义,构造函数(Construction)
    Mytime(int hour,int minute,int second){
        this->hour = hour ;
        this->minute = minute;
        this->second = second;
    }

    //MyTime(); 构造函数方法二
    void ShowTime();

    //设置时间
    void SetTime(int h,int m,int s);
    


private:
    int hour;
    int minute;
    int second;


};

//file.cpp

#include "file.h"
#include <iostream>
#include <iomanip>

using namespace std;

/*构造函数初始化方法二
MyTime::MyTime(){
    int hour = 0;
    int minute = 0;
    int second = 0;
}   

*/

void MyTime::ShowTime(){
        cout<<hour<<":"<<minute<<":"<<second<<endl;
        //为了显示更美观,需要在每个数字前面补0; 需要#include <iomanip>
        /*
        cout << setw(2)<<setfill('0')<<hour<<":"
             << setw(2)<<setfill('0')<<minute<<":"
             << setw(2)<<setfill('0')<<second<<endl;
        */
}

void MyTime::SetTime(int h,int m,int s){
       hour = h;
       minute = m;
       second = s;

 //可以用cin,传参的方式更好。 
 //cin >> hour >> minute>> second;

}
//main.cpp

#include "file.h"
#include <iostream>

using namespace std;

//int h,m,s;  输入的方式
//cin<<h<<m<<s; 输入的方式
MyTime m;
m.ShowTime();
m.SetTime(10,11,12);  // m.SetTime(h,m,s);输入的方式

注:类只是抽象说明,并不占用存储空间,没法存储数据;

如何创建带有初始值的构造函数

//file2.h

#include <iostream>

class CTime
{
public:
    
    //CTime(类型1 形参1,类型2 形参2,类型3 形参3);
    //CTime(int h ,int m ,int s);
      CTime(int h ,int m ,int s){
        hour = h ;
        minute = m;
        second = s; 
    }
    void ShowTime(void);
    //也可以写在方法实现文件中

private:
    int hour;
    int minute;
    int second;

/*
    在数据成员声明时可以加上'm_'来区分,以免混乱。
    int m_hour;
    int m_minute;
    int m_second;

*/

};


//file2.cpp

#include "file2.h"
#include <iostream>

using namespace std;

/*
CTime::CTime(int h ,int m ,int s){
        hour = h ;
        minute = m;
        second = s; 
}
*/

void CTime::ShowTime(){
        cout << setw(2)<<setfill('0')<<hour<<":"
             << setw(2)<<setfill('0')<<minute<<":"
             << setw(2)<<setfill('0')<<second<<endl;
}

//main.cpp

#include "file2.h"
#include <iostream>

using namespace std;

int main(){

    CTime s(11,32,32);
    s.ShowTime();

}


补充知识:对象的复制

 当我们已经船舰好了一个对象,接下来还需要创建若干个完全一样的对象
 如果一个个创建,就太麻烦了
 我们希望能够clone
 c++ 也提供了兑现归档复制机制,如:
 MyTime t2(t1);或者MyTime t2 = t1;
 这里时对象的复制,不是对象的赋值。用t1复制出t2

复制构造函数 Copy Construction

//声明原型如下:

//Class_Name(const Class_Name &) ;
MyTime(const MyTime &);

//函数实现定义如下:
MyTime::MyTime(const MyTime &t){
    hour = t.hour;
    minute = t.minute;
    second = t.second;
}


文章评论

    张三 访客ChromeWindows
    2021-05-11 11:31   回复

    你好

    DJ超 访客ChromeWindows
    2020-11-25 10:28   回复

      S3ner 站长ChromeWindows
      2020-11-25 21:33   回复

    123123 访客ChromeWindows
    2020-11-25 10:18   回复

    背着父亲偷偷学习是把

      S3ner 站长ChromeWindows
      2020-11-25 10:27   回复

      儿子你来了