函数和类的指针模式

1.用指针作为函数参数

void sun(int *time,float *long)

2.指针型函数

数据类型 *函数名(参数列表)                           例: int  *func(void)

{                                                                                        {                       }

函数体                                                                          

}

返回的类型是指针类型



3.指向函数的指针

数据类型 (*函数指针名)(形参表)//声明类型为 数据类型的函数

赋值语句: 函数指针名=函数名




4.对象指针:

类名 *对象指针名                           A *m;         A a;        m=&a;

调用对象a的成员 方法              1、a.成员名       2、m->成员名



5.this 指针

它是一个隐含于每一个类的非静态成员函数中的特殊指针(包括构造函数和析构函数),它用于指向正在被成员函数操作的对象, 也就是*this的值随的对象的变化而变化

   在后置单目运算符++或--重载(operator)运用

例如:

#include<iostream>
using namespace std;
class A{
      int x;                //c++中默认x为私有类型
public:
   A(int i):x(i){}             //构造函数
   void print();              //输出函数
   A  &operator++();      //重载前置运算符++             如;有一个对象a  ,进行++a(3);
   A  operator++(int);        //重载后置运算符++         如;有一个对象a  ,进行a(3)++;
};
A &A::operator++()         
{   x++;
return *this;
}
A A::operator++(int)
{    A b=*this;//创建一个临时的A类的对象b,用来存放初始的对象   如:a(3)++;将a(3)未自增时的内容赋给对象b,此时的 *this为a(3)
     ++(*this);       //经过此语句后,*this  为  a(3)++;  通俗的将就是 a(3)自增后的内容就是  *this的值
      return b;       //这返回的是b,也就是a(3)未自增是的值
}
void A::print(){   cout<<"此刻的对象数据成员x的值为"<<x<<endl;   }
int main()
{
A a(3);
a.print();
(a++).print();
a.print();
(++a).print();
a.print();
return 0;
}

运行结果如下:


6.指向类的非静态成员的指针


类型说明符  类名::*指针名            指向数据成员的指针

赋值语法   指针名=&类名::数据成员

访问数据成员    对象名.*类成员指针名


类型说明符 (类名::*指针名)(参数表)       指向函数成员的指针

赋值语法 指针名=&类名::函数成员

 访问函数成员     (对象名.*类成员指针名)(参数表)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值