C++入门基础2

类与对象

类的定义

类似于c语言中的结构体,C++中也可以定义结构体,在结构体中除了可以定义变量,也可以定义函数体,将这种形式的结构称作类,由关键词class定义

class  classname
{
 //成员变量
 //成员函数
}

类的访问限定

C++可以通过对访问权限将类中的对象属性封装起来,将接口提供给外部的用户使用

在这里插入图片描述
1.public修饰的成员可以在外部进行访问
2.private和protected修饰的则不可以在外部访问
3.class类的默认访问权限是private
4.struct同样可以定义类,struct的默认访问权限是public

类的作用域

类定义了一个新的作用域,在类体外定义成员函数需要使用::作用域解析符进行解析
例如:


class Date
{
private:
	int _year;
	int _month;
	int _day;
public:
	void showdate();//在类体中声明
};
//类体外定义需要加Date::
void Date::showdate()
{
	cout << _year << endl;
	cout << _month<< endl;
	cout << _day<< endl;
}

this指针

C++中给每个非静态成员增加的一个隐藏的指针,该指针指向函数调用时的对象,该指针就是this指针。

class Date
{
private:
	int _year;
	int _month;
	int _day;
public:
	void SetDate(int year,int month,int day)
	{
		_year = year;
		_month = month;
		_day = day;
	//该语句实际为this->_day=day;
	}
	void showdate();
};
void Date::showdate()
{
	cout << _year <<"-"<< _month << "-" << _day << endl;
}
int main()
{
	Date m;
	Date n;
	m.SetDate(2022,4,19);
	n.SetDate(2022,4,20);
	//在调用时没有传递m,n指针
	m.showdate();
}

对于上述代码,m,n在调用SetDate指针时并没有传递指针变量,在如下汇编代码中,m n调用的SetDate其实是一个函数,函数的地址是一样的,是如何知道调用的是m的函数,还是n的函数呢?
在这里插入图片描述
在C++中,类中的成员函数都有一个隐藏的this指针,用来指向当前成员,函数体内对成员变量的访问都是通过该指针调用
在这里插入图片描述

1.this为实际为成员变量的形参,但在成员函数中不做声明
2.this的类型为* const类型,不能进行修改
3.this指针是由编译器通过ecx寄存器自动传递,不需要用户传递

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值