• 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); // 私有成员变量的值可以通过公有的成员变量来获取与设置
  • 相关阅读:
    asp.net mvc 项目架构解析
    新手如何发网站外链,网站的外链如何发,发外链的方法集合
    win2008r2的iis7.5手动建站方法,iis7.5中用独立用户建立网站的方法,提高网站安全性
    ex:Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, . 系统找不到指定的文件。
    微信开放平台---网站应用开发---微信登录功能 简介
    如何使用ILSpy 把发布版本反编译成源码
    沐雪多用户微信公众平台开发源码,商城小程序源码(2018年最新的asp.net C# 微信源码,小程序源码)
    2015淘宝最新排名新规则
    群主微信sdk说明地址
    Quantization Method
  • 原文地址:https://www.cnblogs.com/hs-pingfan/p/10441276.html
Copyright © 2020-2023  润新知