码迷,mamicode.com
首页 > 编程语言 > 详细

C++中关于指针运算符->的重载问题

时间:2014-06-15 10:37:12      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:class   string   os   问题   c++   name   

 

#include<iostream>
using namespace std;
struct date{
 int year;
 int month;
 int day;
};
struct Person{
 string name;
 int age;
 bool gender;
 double salary;
 date birth;
 Person()
 {
  cout<<"创建persond对象"<<this<<endl;
  age=10;
 }
 ~Person()
 {
  cout<<"释放persond对象"<<endl;
 }
};
class autoptr{
public:
 Person *p;

 

public:
 autoptr(Person *p):p(p){cout<<this<<endl;}
 ~autoptr(){delete p;}
 Person * operator->(){
  return p;
 }

 

};
int main()
{
 //autoptr *a=new autoptr(new Person);
 cout<<"=============================="<<endl;
 autoptr b=new Person;

 

 cout<<b->age<<endl;//b->age就相当于(b.operator->())->age,也就意味着->符号很特殊,重载之后,利用b->age这种调用方式,编译器会自动给它加一个->已达到指针变量调用的目的
 cout<<(b.operator->())->age<<endl;

 

 system("pause");
}

 

C++中关于指针运算符->的重载问题,布布扣,bubuko.com

C++中关于指针运算符->的重载问题

标签:class   string   os   问题   c++   name   

原文地址:http://www.cnblogs.com/this-543273659/p/3789173.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!