this指针学习

本文详细介绍了在Qt环境下自定义Array类的过程,包括类的声明、实现及使用示例。探讨了不同方法调用对对象状态的影响,如setLen和printf成员函数的使用,并通过实例演示了对象实例化与引用的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Qt中写的代码,所以Array类自动变为小写。

array.h

#ifndef ARRAY_H
#define ARRAY_H


class array
{
public:
    array(int len);
    ~array();
    array *setLen(int len);
    int getlen();
    array *printf();
private:
    int len;
};

#endif // ARRAY_H

array.app

#include "array.h"
#include <iostream>
using namespace std;

array::array(int len)
{
    this->len = len;
}
array::~array()
{

}
array* array::setLen(int len) //void array::setLen(int len)
{
    this->len = len;
    return this;
}
int array::getlen(){
    return len;
}
array* array::printf() //array& array::printf()
{
    //cout << len << endl;
    cout << this << endl;
    return this;
}

main.app

#include <iostream>
#include "array.h"

using namespace std;

int main(int argc, char *argv[])
{
    array arr1(55);
   // arr1.printf().setLen(5);  
/*
    这个步骤是为了看array.app中printf()中新的对象是否将len的值改变了,
    当用array array::printf()时,是有实例化了一个莫名的对象,所以arr1.len的值并没有改变;
    当用array& array::printf()时,用到了引用,相当于还是操作的arr1这个对象,所以arr1.len的值    
    发生了变化,变成了5;

*/
   // arr1.printf()->setLen(5)->printf();
/*
    这是将void setLen(int len)改用 array * setLen(int len)的时候,效果和上面的语句同样,只            
    不过就是.变成了->
*/

    arr1.printf();

    cout << &arr1 << endl; //最后打印下this指针地址和arr的地址看看是否一样
   // cout << arr1.getlen() << endl;
   
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值