首页 > 编程语言 >类和对象(c++对象模型和this指针)

类和对象(c++对象模型和this指针)

时间:2023-08-23 17:33:22浏览次数:35  
标签:const 函数 对象 成员 c++ NULL 指针

1.成员变量和成员函数分开储存

只有非静态成员变量才属于类的对象上。

空对象内存占用空间为1


this指针的概念

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

this指针式隐含每个非静态成员函数内的一种指针。

this指针不需要定义,直接使用即可。

this指针的用途:

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

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


空指针调用成员函数

例子:

#include <iostream>

using namespace std;


//空指针调用成员函数

class person

{

public:

void showperson()

{

 cout << "this is person class" << endl;

}


void showage()

{

 if (this == NULL)

  return;

 //报错原因是因为传入指针是NULL

 cout << this->m_age << endl;

}

int m_age;

};


void test()

{

person* p = NULL;

p->showperson();

p->showage();

}


int main()

{

test();

system("pause");

return 0;

}


const修饰成员函数

常函数:

1.成员函数后加const后我们称为这个函数为常函数

2.常函数内不可以修改成         员属性。

3.成员属性声明时加关键字mutable后,在常函数中依然可以修改。

常对象:

1.声明对象前加const称为该对象为常对象。

2.常对象只能调用常函数。

标签:const,函数,对象,成员,c++,NULL,指针
From: https://blog.51cto.com/u_15839001/7205244

相关文章

  • 标准C++ -- day03
    一、对象的创建和销毁过程分析对象的创建过程给对象划分内存空间执行初始化列表根据继承表的顺序调用父类的无参构造或者有参构造通过:父类名(val)调用父类的有参构造根据成员变量的定义顺序调用类类型成员的无参构造或者有参构造通过:类类型成员名(val)调用类......
  • python必坑知识点(面向对象)
    面向对象的三大特性:封装,继承,多态1三大特性1.1封装将数据或方法放到类里,以供外部调用或自己隐藏#封装原则1、高内聚:高内聚是指一个模块中各个部分之间关联应该是紧密的。2、低耦合:低耦合是指多个模块之间的关联应该是松散的。1.2继承将类中的公共的方法提取到基类中......
  • js 计算对象数组中某个字段sum之和
    1、一个字段之和要计算一个对象数组中某个字段的和,你可以使用JavaScript的Array.prototype.reduce()方法。reduce()方法对数组中的每个元素执行一个提供的函数,并将结果累积为单个值。以下是一个示例:假设你有一个对象数组 data,每个对象都有一个 value 字段,你想计算所有对......
  • Qt/C++开发经验小技巧281-285
    悬停窗体QDockWidget默认在标题栏右键会弹出悬停模块的显示隐藏菜单,如果需要去掉,会发现设置Qt::NoContextMenu或者事件过滤器拦截都是无效的,必须设置dockWidget->setContextMenuPolicy(Qt::PreventContextMenu);。Qt中的布局有个默认的margin边距值和spacing间距值,在没有设......
  • Pybind11:使用C++编写Python模块
    放假摆了一周了。看论文实在不是什么有意思的活。这两天研究了一下Pybind11的用法。使用C/C++和Python混合编程的想法很早就有了,在大一的一次比赛时曾经实践过(虽然不是我写的),当时获得了比较显著的性能提升。但是当时用的是Swig,据队友说Swig对于NumPy的支持极为阴间,当时调试花了好......
  • C++ LibCurl 库的使用方法
    LibCurl是一个开源的免费的多协议数据传输开源库,该框架具备跨平台性,开源免费,并提供了包括HTTP、FTP、SMTP、POP3等协议的功能,使用libcurl可以方便地进行网络数据传输操作,如发送HTTP请求、下载文件、发送电子邮件等。它被广泛应用于各种网络应用开发中,特别是涉及到数据传输的场景。......
  • Python基础入门学习笔记 039 类和对象:拾遗
    组合(将需要的类一起进行实例化并放入新的类中)实例:1classTurtle:2def__init__(self,x):3self.num=x45classFish:6def__init__(self,x):7self.num=x89classPool:10def__init__(self,x,y):11self.tu......
  • Python基础入门学习笔记 040 类和对象:一些相关的BIF
    一些相关的BIFissubclass(class, classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False1>>>classA:2pass34>>>classB(A):5pass67>>>issubclass(B,A)8True9>>>issubclass(B,B)#......
  • Python基础入门学习笔记 038 类和对象:继承
    继承         子类               父类class DerivedClassName(BaseClassName):……实例:一个子类可以继承它的父类的所有属性和方法1>>>classParent:2defhello(self):3print('正在调用父类的方法......
  • Python基础入门学习笔记 036 类和对象:给大家介绍对象
    给大家介绍对象把乱七八糟的数据扔进列表里,称数据层面的封装把常用的代码段打包成一个函数,称语句层面的封装把数据和代码都封装在一起,称对象层面的封装对象 = 属性 + 方法对象可以从静态(属性)与动态(方法)两个特征来描述 OO(面向对象)的特征继承class Turtle:#Pytho......