null 类对象

news2024/11/27 20:29:34

        这篇文章有助于理解类与对象。类是一种类型,而对象则是一种类型的具体的东西了,即对象是要分配内存的。下面看一下很简单的例子

#include <stdio.h>
#include <stdlib.h>
#include <memory>

class CTest
{
public:
    CTest(): mValue(100)
    {
        printf("constructor\n");
    }

    ~CTest() 
    {
        printf("destructor\n");
    }

    void printValue() const
    {
        printf("mValue = 100\n");
    }

    int getValue() const 
    {
        return mValue;
    }
private:
    int mValue;
};

int main()
{
    CTest *test = nullptr;
    test->printValue();

    return 0;
}

咋一看会不会觉得有问题,指针 test = nullptr,居然还调用成员函数 printValue(),平时我们使用的指针在使用前都要进行一下判断 if(ptr != nullptr) 。那上面这样用会不会出现段错误呢?

函数正常调用,没有出现崩溃。为什么呢?我们用 gdb 跟踪一下:

 

我们可以看到当调用成员函数 printValue() 的时候,传递进来的 this 是 0,然而我们在函数里并没有用到这个 this 指针,即没有用到这个对象的数据,所以不会崩溃。如果我们用到了数据那肯定会出现段错误,printValue() 函数改成如下,结果必定崩溃。

    void printValue() const
    {
        printf("mValue = %d\n", this->mValue);
    }

我们要理解类的非 static 成员函数,它都会有一个 this 指针,这个 this 就是具体的对象。而这些函数只是一个“模板”,它们做的动作都是一样的,不一样的是传递过来的 this。它们是类的一部分,不属于某个对象,所以不管对象有没有,它们是已经存在的,它们是存储于一个程序内存模型里的文本段。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/720055.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Axure教程—表格新增(中继器)

本文介绍的是用Axure中的中继器制作表格新增功能效果 效果 预览地址&#xff1a;https://ure09q.axshare.com 功能 用户点击“新增”出现表单&#xff0c;填写数据后保存数据。 制作 一、所需元件 矩形元件、中继器 二、制作过程 1、表格 拖入一个表格元件&#xff0c;表格…

go-zero的路由机制解析

构建web服务 参考官方教程go-zero安装 //安装goctl插件 go install github.com/zeromicro/go-zero/tools/goctllatest//加载go-zero依赖 go get -u github.com/zeromicro/go-zerolatestzero构建一个http服务器&#xff0c;基于goctl命令创建&#xff1a; goctl api new demo…

Redis 7 常用数据结构

10大数据结构图示 10大数据类型&#xff1a; redis字符串(String)redis列表(ist)redis哈希表(Hash)redis集合(Set)redis有序集合(ZSet)redis地理空间(GEO)redis基数统计(HyperLogLog)redis位图(bitmap)redis位域(bitfield)redis流(Stream) Redis键(key) 命令不区分大小写&am…

Burp代理单个站点

这里写自定义目录标题 Burp代理问题解决代理单个站点&#xff08;核心&#xff09; Burp代理问题 平时进行渗透的时候为浏览器挂上代理后往往全部站点都进行代理&#xff0c;有很多没用的包被抓到&#xff0c;影响测试&#xff0c;且和在burp上设置单个站点抓包比较麻烦。 解…

奥威BI云星空标准方案:部署快、一站式的SaaS BI解决方案

奥威BI云星空标准方案是一种基于奥威BI数据云&#xff08;SaaS平台&#xff09;的商业智能解决方案&#xff0c;提供一站式的销售管理、客户关系管理、人力资源管理、财务管理等业务流程。该方案提供了从数据连接、数据建模到数据分析与价值挖掘的全链路数据应用服务&#xff0…

[AJAX]使用fetch发送请求

fetch是浏览器原生的函数&#xff0c;不需要像原生AJAX新建实例就可以用于发送AJAX请求。 支持Promise获取异步的HTTP响应&#xff0c;和支持流式获取。 服务端代码 // 服务端准备 // 1、引入express const express require(express); // 2、创建应用对象 const app expre…

springcloud+docker+k8s发布脚本

项目结构如图&#xff1a; Dockerfile 文件 构建镜像&#xff1a; #基础镜像&#xff0c;如果本地仓库没有&#xff0c;会从远程仓库拉取 openjdk:8 FROM openjdk:8 #暴露端口 EXPOSE 9301 #容器中创建目录 RUN mkdir -p /usr/local/java #编译后的jar包copy到容器中创建到目录…

PyTorch的安装(ANACONDA+PyCharm)

文章目录 一、概念1.什么是PyTorch2.什么是ANACONDA3.什么是PyCharm 二、PyTorch的安装1.安装ANACONDA和PyCharm&#xff08;一路Next即可&#xff09;2.将ANACONDA与pycharm进行配置3.安装pytorch环境 一、概念 1.什么是PyTorch PyTorch是一个开源的机器学习框架&#xff0c…

软件测试需求分析方法

目录 前言&#xff1a; 1.1 什么是测试需求&#xff1f; 1.2 为什么要做测试需求&#xff1f; 2.测试需求分析方法 2.1 测试需求分析依据 2.2 测试需求架构划分 2.3 测试需求分析过程 2.3.1 测试需求收集 2.3.1.1 测试类型划分 2.3.1.2 测试类型细化 2.3.1.3 生成测…

华为OD机试真题 Python 实现【查找重复代码】【2023Q1 100分】

目录 一、题目描述二、输入描述三、输出描述四、Python算法源码五、效果展示1、输入2、输出 一、题目描述 小明负责维护项目中的代码&#xff0c;需要查找出重复代码&#xff0c;用以支撑后续的代码优化&#xff0c;请你帮助小明找出重复的代码。 重复代码查找方法&#xff1…

高频前端面试题汇总之JavaScript篇

近期整理了一下高频的前端面试题&#xff0c;分享给大家一起来学习。如有问题&#xff0c;欢迎指正&#xff01; 前端面试题系列文章&#xff1a; 【1】「2021」高频前端面试题汇总之HTML篇 【2】「2021」高频前端面试题汇总之CSS篇 【3】「2021」高频前端面试题汇总之Java…

超详细,Pytest自动化测试框架 token全局设置-多套环境使用(实战)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 在做自动化测试时…

LAMP环境搭建

文章目录 LAMP环境搭建LAMP概述LAMP搭建安装Apache服务器安装mariadb(mysql)安装PHP PHP连接MySQLLAMP搭建论坛 LAMP环境搭建 LAMP概述 LAMP是一个常用的Web应用程序开发和部署平台&#xff0c;它是由以下四个开源软件的首字母组成&#xff1a; Linux&#xff08;操作系统&a…

【开发问题】sqlserver怎么开启cdc

怎么开启 执行sql1、创建cdc​2.如上执行完毕之后&#xff0c;会在<database_name>数据库下的“系统表”中创建如下六个系统表&#xff1a;3.验证SQLServer库级别CDC是否启用4.启用SQLServer表级别CDC功能&#xff08;针对某一张表&#xff09;5、验证SQLServer表级别是否…

计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势相关技术与方法介绍系统分析总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序和云开发的小区垃圾分类知识手册平台的设计与实现 摘要 本文介绍了基于微信小程序和云开发的小区垃圾分类知识手…

智慧餐厅系统(外卖、堂食)

智慧餐厅是基于物联网和云计算技术为餐饮店量身打造的智能管理系统&#xff0c;通过客人自主点餐系统、服务呼叫系统、后厨互动系统、前台收银系统、预定排号系统以及信息管理系统等可显著节约用工数量、降低经营成本、提升管理绩效。 系统功能介绍 客户端 1、自助点餐系统&…

JavaScript(基础语法篇)

目录 初识 JavaScript JavaScript 是什么 发展历史 JavaScript 和 HTML 和 CSS 之间的关系 JavaScript 运行过程 JavaScript 的组成 前置知识 JavaScript 的书写形式 1. 行内式 2. 内嵌式 3. 外部式 注释 输入输出 输入: prompt 输出: alert 选择框&#xff1a…

如何用 TDengine 预测 “未来”

介绍 TDengine™ 是一种开源的云原生时序数据库&#xff08;Time Series Database&#xff0c;TSDB&#xff09;&#xff0c;专为物联网&#xff08;IoT&#xff09;、连接汽车和工业物联网进行了优化。它能够高效地实时摄取、处理和监控一天内由数十亿个传感器和数据收集器产…

美女小姐姐是你得菜吗~PYTHON采集西瓜小姐姐

目录标题 前言第三方模块&#xff1a;环境介绍:基本流程:代码展示尾语 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 第三方模块&#xff1a; requests >>> pip install requests 第三方模块安装: win R 输入cmd 输入安装命令 pip install 模块名 (如果你觉…

Matlab|改进的粒子群算法优化支持向量机(多分类)

作者在前面的文章中介绍了粒子群算法的原理及其2种改进算法&#xff0c;本文将基于这三种优化方法&#xff0c;应用于支持向量机进行分类&#xff0c;并对比改进算法与标准粒子群算法的分类性能&#xff0c;结果显示改进后的方法能够得到更佳的分类效果。&#xff08;在对PSO-S…