c++知识细节-类和对象-成员函数/对象拷贝/私有成员

本文详细介绍了C++中的类基础,包括类作为用户自定义数据类型的概念,成员函数的使用,以及如何通过作用域运算符访问成员。此外,还探讨了对象拷贝的默认行为以及如何通过自定义赋值运算符控制拷贝行为。私有成员部分阐述了私有成员的作用,即保护数据不被外部直接访问,并通过成员函数实现内部操作。
摘要由CSDN通过智能技术生成

c++知识细节-类和对象-成员函数/对象拷贝/私有成员

综述

  • 类是我们自己定义的数据类型(新类型)
    设计一个类要考虑的角度:
    (1) 站在设计和实现者的角度
    (2) 站在使用者的角度
    (3) 父子关系

类基础

(1) 一个类就是一个用户自己定义的数据类型,我们可以把类想象成一个命名空间,里包着一堆东西(成员函数,成员变量)
(2) 如果是类的对象,使用对象名.成员名来访问成员;如果是指向这个对象的指针,使用指针名->成员名来访问成员.
(4) public成员提供累的接口,暴露给外界,供外界使用;private成员提供了各种实现类功能的细节方法和属性,不暴露给外界,外界无法使用.
(5) struct可以理解成一个成员全都为public的类.
(6) class成员默认是private私有的.

成员函数

  • 类定义可以重复定义,不会报错,而全局变量不行.
    //Time.h
#ifndef __MYTIME__
#define __MYTIME__
class Time
{
public:
	int Hour;	//小时
	int Minute; //分钟
	int Second; //秒钟	
	//成员函数
	void initMytime(int tHour, int tMin, int tSec);
}
#endif

Time.cpp

#include <Time.h>
//成员函数的实现
//其中这两个::叫做作用域运算符,表示这里实现的initTime函数属于Time类
void Time::initMytime(int tHour, int tMin, int tSec)
{
	Hour = tHour;
	Minute = tMin;
	Second = tSec;
	//成员函数中,可以直接使用成员变量名
	//哪个对象调用的更成员函数,这些成员变量就属于哪个对象.即类成员函数知道哪个对象
}

//main.cpp

#include <Time.h>
/* 不使用成员函数
void initMytime(Time & tTime, int tHour, int tMin, int tSec)
{
	tTime.Hour = tHour;
	tTime.Minute = tMin;
	tTime.Second = tSec;
}
*/
void main
{
	Time myTime;
	//initTime(myTime,11,14,5);
	myTime.initTime(11,14,5);
}

对象的拷贝

Time myTime;	//类对象
mytime.Hour = 12;
mytime.Minute = 15;
mytime.Second = 40;

//以下这些都是对象的拷贝
//默认情况下,这种类对象的拷贝,是每个成员变量的逐个拷贝
//如果在类Time中定义适当的"赋值运算符",就能控制对象的这种拷贝行为.
Time myTime2 = myTime;
Time myTime3(myTime);
Time myTime4{myTime};
Time myTime5 = {myTime};

私有成员(private)

//Time.h

class Time
{
private :
	int Millsecond;	//毫秒
	//私有函数
	void initMillTime(int mls);
public:
	int Hour;	//小时
	int Minute; //分钟
	int Second; //秒钟	
	//成员函数
	void initMytime(int tHour, int tMin, int tSec);
}

//Time.cpp

#include <Time.h>
void Time::initMytime(int tHour, int tMin, int tSec)
{
	Hour = tHour;
	Minute = tMin;
	Second = tSec;

	//不暴露给外部使用者,但是成员函数内部可以调用私有成员函数
	initMillTime(0);
}
void Time::initMillTime(int mls)
{
	Millsecond = mls;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值