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

一、综述

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

设计类时要考虑的角度:

(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); // 私有成员变量的值可以通过公有的成员变量来获取与设置

 

posted @ 2019-02-27 07:39  平凡_h  阅读(1053)  评论(0编辑  收藏  举报