在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;
}