c++——初识类对象

本文介绍了C++中的this指针,它是每个非静态成员函数内的隐含参数,用于指向调用成员函数的对象。文章还讨论了构造函数和析构函数的用途,包括它们的调用顺序,以及析构函数在内存管理中的角色。此外,内联函数的概念也被提及,强调了inline关键字的作用和使用条件。



一、this指针

在这里插入图片描述

  • 实例化对象之后对应的地址,保证每个对象都能利用自己的数据共享使用成员函数处理数据
    在这里插入图片描述

  • -this指针隐含在每一个非静态成员函数内,指向被调用成员函数所属的对象

  • 成员函数的其它参数正常都是存放在栈中,而this指针参数则是存放在寄存器中

  • this指针可以为空,当我们调用函数时,如果函数内部不需要使用到this,也就是不需要通过this指向当前对象并对其进行操作时才可以为空。若在调用成员函数需要访问对象时,此时this为空会造成程序崩溃

class Date
{
public:
	void change()
	{
		cout<<"我是change"<<endl;
		cout<<_year<<endl;
	}
private:
	int _year;
	int _month;
	int _day;
};

int main()
{
	Date A;
	Date *p=NULL;
	p->change();//此时利用this指针访问成员函数时就会造成程序崩溃
}

在这里插入图片描述

  • 此时利用this指针访问属性_year时,就会造成空指针访问。

二、构造函数

在这里插入图片描述
实例分析
在这里插入图片描述

  • A选项:无返回值,何来类型
  • B选型:构造函数可以被private修饰,如果当前类只有一个构造方法且被private修饰,那么其它类是无法创建当前类的对象并且当前类也是不能被继承的。
  • D选项:可以带参数,构成函数重载。

三、析构函数

1、析构函数

在这里插入图片描述

2、析构函数和构造函数调用顺序

实例分析

在这里插入图片描述
在这里插入图片描述

  • 默认会先构造后析构
  • 析构顺序继承关系的构造函数和析构函数的执行顺序为:
    • 1、父类构造函数执行。
    • 2、子类构造函数执行。
    • 3、子类析构函数执行。
    • 4、父类析构函数执行。

四、inline关键字定义内联函数

在这里插入图片描述

  • 使用 inline 关键字的函数只是用户希望它成为内联函数,但编译器有权忽略这个请求,比如:若此函数体太大,则不会把它作为内联函数展开的。
  • 头文件中不仅要包含 inline 函数的声明,而且必须包含定义,且在定义时必须加上 inline 。关键字 inline 必须与函数定义体放在一起才能使函数成为内联,仅将 inline 放在函数声明前面不起任何作用。
  • inline 函数可以定义在源文件中,但多个源文件中的同名 inline 函数的实现必须相同。一般把 inline 函数的定义放在头文件中更加合适。
  • 类的成员函数,默认都是 inline 的。定义在类声明之中的成员函数将自动地成为内联函数。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值