类和对象(1)

本文介绍了C++中struct和class的区别,包括默认访问权限的不同、struct对C兼容性以及类的实例化内存分配。此外,还详细讲解了this指针的隐含性质和使用规则。
摘要由CSDN通过智能技术生成

引入

我们在c语言阶段使用的struct其实与类很相似。所以c++兼容c语言结构体struct的用法,同时升级成了类。但为了区分,我们用class来定义类,但是结果提也是可以的。

class 类名
{

//private:
//public:        访问限定符
//protected:

	//成员函数
	// 
	// 
	// 
	//成员变量

};

struct与class的区别
1.struct默认是公有访问,class默认私有访问
2.struct兼容C

访问限定符

public:公有的,可以在整个项目中使用。
private:私有的,只能在类中使用。
protected:保护的

类的实例化

用类类型创建对象的过程,称为类的实例化。那么类的实例化如何分配的内存呢?实例化出的对象才能实际存储数据,占用物理空间

1.对象中只有成员变量,成员函数在公共区域

class Date 
{
public:
	void Init(int year=1,int month=1,int day=1)
	{
		_year = year;
		_month = month;
		_day = day;
	}
	void Print()
	{
		cout << _year << "-" << _month << "-" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;

};
int main()
{
	Date d1;
	d1.Init(2024, 1, 28);
	d1.Print();
	cout << sizeof(Date) << endl;
	return 0;
}

在这里插入图片描述
由上图可见,编译器并没有计算成员函数的大小,只计算了成员函数的大小。

this隐含指针

this是成语函数第一个参数

class Date
{
public:
	void Init(int year = 1, int month = 1, int day = 1)
	{
		this->_year = year;
		this->_month = month;
		this->_day = day;
	}
private:
	int _year;
	int _month;
	int _day;

};

上述代码会发现,this是存在的。

this指针的特性
1.this指针的类型:是类类型*const ,即成员函数中,不能给this指针赋值。
2.只能在成员函数内部使用。
3.this指针本质上是“成员函数”的形参,当对象调用成员函时,将对象地址作为实参传递给this形参所以对象中不存储this指针
4.this指针是“成员函数”第一个隐含的指针形参。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值