C++入门:类与对象

本文详细介绍了C++中的类和对象概念,包括类的定义、访问限定符(public、protected、private)及其作用,强调了封装在面向对象编程中的重要性。同时,讨论了类对象的大小计算,指出成员函数并不占用类对象的存储空间。此外,还解释了this指针的存在意义和特性,它是如何帮助在成员函数中区分不同对象的。
摘要由CSDN通过智能技术生成

1、什么是类?什么是对象?
众所周知,C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
在C语言中,结构体中只能定义变量,而在C++中,结构体不仅可以定义变量,也可以定义函数。
C语言中用struct定义结构体,C++当中更喜欢用class来代替
2、类的定义

class className
{
   //类体:由成员函数和成员变量组成
};//一定要注意后面的分号

class为定义类的关键字ClassName为类的名字{}中为类的主题注意类定义结束时后面分号
3、类的访问限定符及封装
3.1访问限定符
访问限定符分为:public(公有)、protect(保护)、private(私有)。
【访问限定符的说明】
●public修饰的成员在类外可以直接被访问。
●protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)
●访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现为止,
●class的默认访问权限为private,struct为public(因为struct要兼容C)
3.2封装
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
封装本质上是一种管理
4、类对象模型
4.1如何计算类对象的大小

class A
{
	public:
		void PrintA
		{
			cout<<_a<<endl;
		}
	private:
		char _a;
};

如上所示,既有成员变量,又有成员函数。那么它的大小是多大呢?
4.2类对象的存储方式
在这里插入图片描述只保存成员变量,成员函数存放在公共的代码段。
好处:避免了相同代码保存多次,浪费空间。
结论:一个类的大小,实际就是该类中“成员变量”之和,当然也要进行内存对齐,注意空类的大小,空类比较特殊,编译器给了空类一个字节来唯一标识这个类。
问题:如果类中只有成员函数,那么这个类的大小是多少?
回答:1个字节,因为不存在0个字节的类,所以勉强给了1个字节的存储空间。
5、this指针
5.1为什么要存在this指针?
在调用类的成员函数的时候,是怎么区分不同对象的呢?这里就通过引入this指针来解决该问题。即:C++编译器给每个“非静态的成员函数”增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。
5.2this指针的特性
●this指针的类型:类类型* const
●只能在“成员函数”的内部使用
this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针
this指针是成员函数的第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值