类的基础简介

本文详细解释了C++中的类设计、基础构成(成员变量与函数)、访问规则、对象拷贝以及私有成员的使用。以Time类为例,探讨了如何控制对象拷贝行为和访问私有成员的方法。

一、综述:类是自己定义的数据类型(新类型)

设计类时要考虑的角度:
    (1)站在设计和实现者的角度来考虑;
    (2)站在使用的角度来考虑;
    (3)父类,子类的问题;

二、类基础

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


    (2)一个类的构成成员变量,成员函数(有许多特殊的成员函数,后续慢慢讲解)


   (3)我们访问类成员的时候,如果是类对象,我们就使用  对象名.成员名  来访问成员
                             如果是指向这个对象的指针,我们就用  指针名->成员名  来访问成员

class student {
public:
	int number;
	char name;
};
    student someone;//定义类对象
    someone.number = 10000;
    student* psomeone = &someone;
    psomeone->number = 1005;
    cout << someone.number << endl;//1005

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


    (5)struct 成员默认public的class; struct A{.....}


    (6)calss成员默认private(私有);class A{......}
         struct A{.....}等价于:
         class A{public:......}

    三:成员函数

   类在定义的时候,可以多次定义,如你在Time.cpp中定义,然后又在ConsoleApplication中定义不会报错
    

Time.h文件
#ifndef _MYTIME_
#define _MYTIME_
class Time//定义一个时间类  或类声明
{
public:
	int hour;//小时
	int minute;//分钟
	int second = 0;//类内初始化
	//int second;//秒
	const int ctestvalue = 80;//定义一个成员常量
	//成员函数:
	void initTime(Time& stmptime, int tmphour, int tmpmin, int tmpsec);
};
#endif


Time.cpp文件
#include<iostream>
#include"Time.h"
//成员函数initTime()的实现
//其中这两冒号::叫  作用域运算符,表示initTime函数属于Time类
void Time::initTime(Time& stmptime, int tmphour, int tmpmin, int tmpsec)
{
	/*stmptime.hour = tmphour;
	stmptime.minute = tmpmin;
	stmptime.second = tmpsec;*/
	hour = tmphour;//我们注意到,在成员函数中,我们可以直接使用成员函数变量名
	                 //哪个对象调用的该成员函数,这些成员变量就属于哪个对象,
	                 //大家可以理解成类成员函数知道哪个对象调用自己
	minute = tmpmin;
	second = tmpsec;
	initMillTime(0);
}

ConsoleApplication.cpp文件
#include<iostream>
#include<string>
#include<vector>
#include"Time.h" 

int main()
{
// 类在定义的时候,可以多次定义,如你在Time.cpp中定义,
//然后又在ConsoleApplicatio中定义不会报错
    Time mytime;//类对象
    mytime.initTime(mytime, 11, 14, 5);
    cout << mytime.hour << endl;
    cout << mytime.minute << endl;
    cout << mytime.second << endl;
}
   

    四、对象的拷贝

    对象本身可以拷贝的 如下:
    默认情况下,这种类对象的拷贝,是每个成员变量的逐个拷贝
    如果在类Time中我们定义适当的 “赋值运算符” 就能控制对象的这种拷贝行为。
  

    Time myTime;//类对象
    myTime.hour = 12;
    myTime.minute = 15;
    myTime.second = 16;

    Time myTime2 = myTime;
    Time myTime3(myTime);//int a=4;int b(a);
    Time myTime4{ myTime };
    Time myTime5 = { myTime };
    myTime5.hour = 8;

    五、私有成员

Time.h文件
#ifndef _MYTIME_
#define _MYTIME_
class Time//定义一个时间类  或类声明
{
private:
	int Millsecond;/*毫秒*/
private:
	void initMillTime(int mls);
}
#endif

Time.cpp文件
#include<iostream>
#include"Time.h"
using namespace std;
void Time::initMillTime(int mls)
{
	Millsecond = mls;//成员函数可以访问成员变量,不管成员是公有public还是私有private
}

ConsoleApplication.cpp文件
#include<iostream>
#include<string>
#include<vector>
#include"Time.h" 
int main()
{
    Time mytime;
    mytime.hour = 5;
    mytime.millsecond = 10000;//private:  millsecond  私有的不能直接,成员变量名引用
    mytime.initMillTime(0);不能访问私有成员函数
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值