c++笔记_类和对象

本文介绍了面向对象编程中的封装概念,包括访问权限(public、private、protected)及其在类内外的作用。类的空间大小主要由成员数据决定,而成员函数不占用类的空间。此外,类作用域允许成员函数自由访问类内其他成员,无论声明次序。最后,讲解了如何在类的外部定义成员函数,并强调了常量成员函数的定义要求。
摘要由CSDN通过智能技术生成


一、封装

封装:把变量(属性)和函数(操作)合成一个整体,封装在一个类中,对变量和函数进行访问控制(公有、私有、保护)。

1.访问权限

一.在类的内部(作用域范围内),没有访问权限之分,所有成员可以相互访问。

二.在类的外部(作用域范围外),访问权限才有意义:public、private、protected。

三.在类的外部,只有public修饰的成员才能被访问,在没有涉及继承与派生时,private和protected是同等级的,外部不允许访问。
在这里插入图片描述

class 类名{			
	private:			//私有属性,类的外部不能直接访问方法成员
	protected:			//受保护属性,类的外部不能直接访问方法成员
	public:				//公有属性,类的外部可以直接访问方法成员
	//类的内部没有权限之分,都可以相互访问
	//默认情况下class是私有属性,用户可以借助公有的方法间接的操作访问私有数据
};

二、类的空间大小

#include<iostream>
using namespace std;
class test{
	private:
		int num;				//成员数据占类的空间大小
	public:
		void show_num()			//成员函数(方法)不占类的空间大小
		{
			//定义在类内部的函数是隐式的inline函数
			cout<<num<<endl;	
		}		
};

三、类作用域和成员函数

类本身就是一个作用域(类的成员函数定义嵌套在类的作用域之内),编译器分两步处理类:首先编译成员的声明,然后才轮到成员函数体(如果有的话)。因此,成员函数体可以随意使用类中的其他成员而无需在意这些成员出现的次序。

四、在类的外部定义成员函数

像其他函数一样,当我们在类的外部定义成员函数时,成员函数的定义必须与它的声明匹配(返回类型、参数列表和函数名都要与类内部声明函数保持一致)。

如果成员被声明成常量成员函数,那么它的定义也必须在参数列表后明确const属性。同时,类外部定义的成员的名字必须包含它所属的类名:

#include<iostream>
using namespace std;
class Student{
	private:
		int num;				
	public:
		void showNum() const;			//常量成员函数
		int setNum(int _num);			
};

//类外部定义成员函数,需要使用域运算符
int Student::setNum(int _num)
{	
	this->num = _num;
	return this->num;			
}

//类外部定义常量成员函数,必须参数列表后明确指定const属性
void Student::show_num() const
{
	cout<<this->num<<endl;
}

常量对象,以及常量对象的引用或指针都只能调用常量成员函数。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值