C++ 面向对象模型 小知识点

空类 大小

空类的 sizeof 结果是 1。原因:每个对象都应该在内存上有独一无二的地址,因此给空对象分配 1 个字节空间。

当定义了一个变量后,则类的大小为这个变量的大小。

类中 变量和函数是分开存储的。

静态成员变量,静态成员函数,成员函数,都不占用类的空间。

每一个非内联成员函数只会诞生一份函数实例.

this指针工作原理

类的多个对象会共用一块代码,类中的成员函数如何区分哪个对象调用自己的呢?

当一个对象被创建后,它的每一个成员函数都含有一个系统自动生成的隐含指针this,用以保存这个对象的地址.

this指针 指向 被调用的成员函数 所属的对象。

this指针并不是对象的一部分,不会影响sizeof(对象)的结果。

this指针是一种隐含指针,它隐含于每个类的非静态成员函数中。

静态成员函数内部没有this指针,静态成员函数不能操作非静态成员变量。

this指针的使用

当形参和成员变量同名时,可用 this 指针来区分

在类的非静态成员函数中返回对象本身,可使用 return *this;

空指针调用成员函数

现象
//空指针调用成员函数
Person *p = NULL;
p->show();

如果 show() 中没有使用成员属性 ,则不会报错, 否则会报错.

预防

在成员函数开头加上判断

if(this == NULL)
{
   
	return;
}

相关推荐

  1. C++ 面向对象模型 知识

    2023-12-14 11:46:03       65 阅读
  2. C# 面向对象(OOP)编程关键知识

    2023-12-14 11:46:03       48 阅读
  3. Python知识面向对象第二部分

    2023-12-14 11:46:03       42 阅读
  4. 【软件设计师知识】七、面向对象技术

    2023-12-14 11:46:03       35 阅读
  5. C++模板知识总结

    2023-12-14 11:46:03       41 阅读
  6. 关于C++的一些知识

    2023-12-14 11:46:03       48 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 11:46:03       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 11:46:03       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 11:46:03       82 阅读
  4. Python语言-面向对象

    2023-12-14 11:46:03       91 阅读

热门阅读

  1. 《Python编程:从入门到实践》各章习题答案汇总

    2023-12-14 11:46:03       58 阅读
  2. TCP/IP协议

    2023-12-14 11:46:03       65 阅读
  3. Web Socket如何使用

    2023-12-14 11:46:03       63 阅读
  4. Unity3D 如何上传一个文件到服务器详解

    2023-12-14 11:46:03       58 阅读
  5. AcWing 178:第K短路 ← A* 算法

    2023-12-14 11:46:03       59 阅读
  6. LeetCode19. Remove Nth Node From End of List

    2023-12-14 11:46:03       54 阅读
  7. 期末总复习(重点!!!)

    2023-12-14 11:46:03       62 阅读