C++ 类this及返回自身对象的引用方式

C++ 类this及返回自身对象的引用方式

this指针

每个非静态成员函数都有一个隐含的形参,即指向该类对象的指针。这个指针就是this指针。通过this指针,我们可以访问到类的所有成员变量和成员函数。

在C++中,关键字this用来指向当前对象。this指针是一个隐式参数,它在成员函数内部使用。

返回自身对象的引用

在C++中,返回自身对象的引用是一种常见的编程技巧。它可以方便地实现连续的函数调用,即链式调用。如:

Car myCar;
myCar.setName("Tesla").setColor("Black").setPrice(100000);

返回自身对象的引用是通过在函数声明处加上引用符&实现的。示例代码如下:

class Car {
public:
    Car& setName(string _name) {
        name = _name;
        return *this;
    }
    Car& setColor(string _color) {
        color = _color;
        return *this;
    }
    Car& setPrice(double _price) {
        price = _price;
        return *this;
    }

private:
    string name;
    string color;
    double price;
};

在上面的代码中,setName、setColor和setPrice函数都返回了当前对象的引用。

这样,我们就可以通过链式调用的方式设置对象的属性值。例如:

Car myCar;
myCar.setName("Tesla").setColor("Black").setPrice(100000);

这段代码可以等价于以下代码:

Car myCar;
myCar.setName("Tesla");
myCar.setColor("Black");
myCar.setPrice(100000);

但是,使用链式调用可以使代码更加简洁明了。

示例代码

下面给出一个更加完整的示例代码:

#include <iostream>
#include <string>

using namespace std;

class Car {
public:
    Car& setName(string _name) {
        name = _name;
        return *this;
    }
    Car& setColor(string _color) {
        color = _color;
        return *this;
    }
    Car& setPrice(double _price) {
        price = _price;
        return *this;
    }
    void display() {
        cout << "name: " << name << endl;
        cout << "color: " << color << endl;
        cout << "price: " << price << endl;
    }

private:
    string name;
    string color;
    double price;
};

int main() {
    Car myCar;
    myCar.setName("Tesla").setColor("Black").setPrice(100000);
    myCar.display();

    return 0;
}

输出结果为:

name: Tesla
color: Black
price: 100000

在上面的代码中,我们定义了一个Car类,并重载了setName、setColor和setPrice函数,使它们可以返回当前对象的引用。然后,在主函数中创建了一个Car对象myCar,并使用链式调用的方式设置了其属性值。最后,调用了display函数显示结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ 类this及返回自身对象的引用方式 - Python技术站

(0)
上一篇 2023年5月22日
下一篇 2023年5月22日

相关文章

  • asp.net(C#)解析Json的类代码

    下面我将详细讲解“asp.net(C#)解析Json的类代码”的完整攻略。 1. 什么是Json? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于服务器端和Web应用程序之间的数据传输。它基于JavaScript语言的一个子集,易于人们阅读和编写。JSON采用完全独立于编程语言的文本格式来描述数据。 JSO…

    C 2023年5月23日
    00
  • C/C++的文件IO函数你知道吗

    C/C++的文件IO函数攻略 什么是文件IO? 文件IO(Input/Output)指的是使用程序对文件进行读写的操作。对于C/C++语言而言,文件IO是一个非常基础和常用的操作。 文件IO函数 fopen函数 用于打开一个文件,并返回一个文件指针(FILE*)。如果打开成功,则返回指向文件指针的地址,否则返回NULL。 FILE *fopen(const …

    C 2023年5月23日
    00
  • C/C++中extern “C” 的作用分析

    当C++代码需要与C代码进行链接时,由于C++编译器经过了重载和命名改编等操作,因此函数名、变量名等有时需要进行改变,此时如果C++代码直接链接C代码,则可能会发生链接错误。为了解决这个问题,C++提供了extern “C”语法来解决此类问题。 一、extern “C”语法介绍 extern “C”是C++中用于链接C代码的一种机制。当代码被extern “…

    C 2023年5月23日
    00
  • 方阵顺时针旋转的实现代码

    实现方阵顺时针旋转的算法可以采用原地旋转法。代码流程如下: 1.将方阵顺时针旋转90度,可以先将方阵进行转置,然后将每一行倒序排列即可。 2.将方阵顺时针旋转180度,可以先将方阵进行上下翻转,再进行左右翻转即可。 3.将方阵顺时针旋转270度,可以先将方阵进行转置,然后将每一列倒序排列即可。 下面是具体的实现代码: #方阵顺时针旋转90度 def rota…

    C 2023年5月23日
    00
  • c语言实现顺序表的基本操作

    下面就为大家详细讲解“C语言实现顺序表的基本操作”的完整攻略。 1. 什么是顺序表? 顺序表是一种线性结构,其存储单元在物理上也是连续的,它可以用数组实现,具有随机存取的特征。顺序表最大的特点是能够快速的查找指定位置上的元素,但是插入或删除操作常常需要移动大量元素,效率较低。 2. 顺序表的基本操作 顺序表的基本操作包括插入、删除、查找、修改、遍历等操作。接…

    C 2023年5月23日
    00
  • python math模块使用方法介绍

    Python math模块使用方法介绍 Python的math模块是一个十分强大的数学库,提供许多数学函数和常数。下面将对math模块的使用方法进行详细介绍。 导入math模块 使用math模块前,需要先导入该模块。可以使用以下方式进行导入: import math 常用的math函数 math模块提供了许多数学函数,这里列举一些常用的函数: math.ce…

    C 2023年5月22日
    00
  • C++实现CreatThread函数主线程与工作线程交互的方法

    下面是 “C++实现CreatThread函数主线程与工作线程交互的方法”的完整攻略: 1. 确定主线程与工作线程之间要交互的数据类型 在创建工作线程之前,需要确定主线程与工作线程之间要交互的数据类型,这个数据类型可以是自定义的结构体或类,也可以是任何基本数据类型。请特别注意,主线程与工作线程之间访问同一个变量时需要进行线程同步,防止数据的冲突和混乱。 2.…

    C 2023年5月22日
    00
  • C语言实现简易计算器功能

    C语言实现简易计算器功能 简介 计算器是程序员开发中常用的功能之一。实现计算器功能可以提高自己的编程能力,同时也是开发其它应用程序的基础。在本文中,我们将讲解如何使用C语言实现一个简单的计算器。 实现步骤 以下是实现计算器功能的步骤: 获取用户输入的算式; 分解算式,将每个操作数和运算符都存储到相应的变量中; 根据运算符计算结果; 输出结果。 代码示例 下面…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部