实验目的:
掌握 this 指针的使用方法;
两个方面的应用:
一是 区别数据成员和普通变量
二是 返回对象本身
- #include <iostream>
-
#include <cstring> //在 vc6.0 下 使用#include<string.h>
-
//在 g++ 环境 为 cstring
-
-
using namespace std;
-
class CStudent
-
{
-
public:
-
CStudent();//构造函数 没有返回值
-
CStudent(char *name,int age); //定义一个带参 构造函数
-
~CStudent(); //析构函数,唯一,不能重载
-
-
CStudent init(char *name,int age); //赋值功能
-
void output(); //输出类对象的两个数据成员
-
private:
-
char name[20];
-
int age;
-
};
-
-
CStudent::CStudent() //无参构造函数
-
{
-
strcpy(this->name," ");
-
this->age=0;
-
}
-
-
CStudent::CStudent(char *name,int age) //带参 构造函数实现
-
{
-
strcpy(this->name,name);
-
this->age=age;
-
}
-
-
CStudent::~CStudent()
-
{
-
cout<<"the object is deconstructing..."<<endl;
-
}
-
-
CStudent CStudent::init(char *name,int age)
-
{
-
strcpy(this->name,name);
-
this->age=age;
-
return (*this); 返回对象
-
}
-
-
void CStudent::output()
-
{
-
cout<<this->name<<" "<<this->age<<endl;
-
}
-
-
int main()
-
{
-
CStudent stu("tom",32);
-
stu.init("marry",24).output();
-
-
return 0;
-
}
- ywx@yuweixian:~/yu/c++/shiyan1$ ./student1
-
marry 24
-
the object is deconstructing...
-
the object is deconstructing...
-
ywx@yuweixian:~/yu/c++/shiyan1$
为什么会有 两次析构呢??
因为 return (*this) 返回了一个新的对象如果我们只希望返回本身的对象,应该怎么修改呢?
我们增加一个 & ,不发生值传递,只发生引用- CStudent & init(char *name,int age); //赋值功能
- CStudent & CStudent::init(char *name,int age)
-
{
-
strcpy(this->name,name);
-
this->age=age;
-
return (*this);
-
}
- ywx@yuweixian:~/yu/c++/shiyan1$ ./student1
-
marry 24
-
the object is deconstructing...
-
ywx@yuweixian:~/yu/c++/shiyan1$
阅读(503) | 评论(0) | 转发(0) |