欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C++基础知识:成员函数、对象拷贝、私有成员

程序员文章站 2022-07-02 17:11:53
一、综述 类是我们自己定义的数据类型(新类型) 设计类时要考虑的角度: (1)站在设计和实现者的角度来考虑 (2)站在使用者的角度来考虑 (3)父类,子类 二、类基础 (1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。 (2)一个类的构成:成 ......

一、综述

类是我们自己定义的数据类型(新类型)

设计类时要考虑的角度:

(1)站在设计和实现者的角度来考虑

(2)站在使用者的角度来考虑

(3)父类,子类

二、类基础

(1)一个类就是一个用户自己定义的数据类型,把类可以想象为一个命名空间,包着一堆东西(成员函数,成员变量)。

(2)一个类的构成:成员变量,成员函数(有许多特殊的成员函数)。

(3)我们访问类成员时,我们就用对象名.成员名来访问成员

如果是指向对象的指针,我们就用指针名->成员名来访问成员。

class student
{
       int number;
       char name[100];
}

student someone; // 定义类的对象
someone.number = 1000;
student *someone1 = &someone;
someone->number = 1005;
cout << someone1->number << endl;

(4)public成员提供类的接口,暴露给外接,供外界调用;private成员提供各种实现类的细节方法,但不暴露给使用者,外界无法访问这些成员。

(5)struct是成员默认为public的class;      struct a{….}

(5)class是成员默认为private(私有)class a{….}

三、成员函数

class time
{
public:
    int hour;       // 小时
    int minute; // 分钟
    int second; // 秒钟

    void inittime(int tmphour, int tmpminute ,int tmpsecond)
    {
        hour = tmphour;
        minute = tmpminute;
        second = tmpsecond;
    }
}

int main()
{
       time mytime; // 类对象
       mytime .inittime(mytime,11,14,5);
       cout << mytime.hour << endl;
       cout << mytime.minute << endl;
       cout << mytime.second << endl;
       return 0;
}

 

当做工程来写

//time.h

#ifndef __mytime__
#define __mytine__

class time
{
public:
    int hour;       // 小时
    int minute; // 分钟
    int second; // 秒钟

    void inittime(int tmphour, int tmpminute ,int tmpsecond);
}
#endif
//time.cpp

#include “tiem.h”

// 成员函数的实现
// 其中::称为作用于运算符,表示inittime这个函数属于time类
void time::inittime(int tmphour, int tmpminute ,int tmpsecond)
{
    hour = tmphour; // 成员函数中可以直接使用成员变量名
    minute = tmpminute;
    second = tmpsecond;
}

 入口函数文件

#include “time.h”

int main()
{
     time mytime; // 类对象
     mytime .inittime(mytime,11,14,5);
     cout << mytime.hour << endl;
     cout << mytime.minute << endl;
     cout << mytime.second << endl;
   
     return 0;
}

四、对象的拷贝

对象本身是可以拷贝的

默认情况下,类对象的拷贝,是每个成员变量的逐个拷贝。

如果在类中定义适当的赋值运算符就能够控制对象的拷贝行为。

time mytime;
mytime.hour = 12;
mytime.minute = 15;
mytime.second = 5;

time mytime2 = mytime;   // 定义新对象并初始化
time mytime3(mytime);
time mytime4 {mytime};
time mytime5 = {mytime};
mytime5.hour = 8;

五、私有成员

class time
{
private:
       int millsecond;  // 毫秒
public:
       int hour;       // 小时
       int minute; // 分钟
       int second; // 秒钟

    void inittime(int tmphour, int tmpminute ,int tmpsecond)
    {
           hour = tmphour;
           minute = tmpminute;
           second = tmpsecond;
    }

    void initmilltime(int mls)
    {
           millsecond = mls; // 成员函数可以访问成员变量,不管成员是否私有
    }
}


time mytime;
//mytime. millsecond = 1000; // 出错,无法访问
mytime.initmilltime(1000); // 私有成员变量的值可以通过公有的成员变量来获取与设置