现在的位置: 首页 > 综合 > 正文

2.C++类this指针

2013年10月03日 ⁄ 综合 ⁄ 共 1139字 ⁄ 字号 评论关闭
 2.类this指针   
function:C++ language Technology
author  :chinayaosir   QQ:44633197 
blog    :http://blog.csdn.net/chinayaosir
note    :禁止其它网站转载此文章

(前言,定义,基类与派生类,设计指导)
1.前言
类的成员函数都有一个附加的形参,是类对象的指针this
.何时必须使用:当我们需要把一个对象作为一个整体从函数返回时就必须使用this指针
.返回类对象的引用就必须使用return *this;
.不能从const成员函数返回*this
 
2.定义
this指针存在于每个成员函数中,可直接使用,因经不用定义
我们一定要在类的复制控制,区分this指针的在复制构造函数,复制赋值函数的不同用法
class empty{
public:
 empty(const empty& rhs){...} //复制构造函数
 empty& operator=(const empty& rhs){...} //复制赋值函数
};
 
2.1在复制构造函数时,直接用类的this引用对象来一一初始化当前类this的各个成员
复制构造函数是能过this指针来实现的
如class a{....};定义好一个完整的类a,
a a1; //定义好一个a1的类实例,a1的各种在员由a的无参数的构造函数已经初始化所有成员
a b1(a1);//这个时候启用了类的复制构造函数,它用a1各个成员的值去一一初始化b1的所有成员,
代码举例:
class item{
...
private:
 std::string isbn;
 int sold;
 double revenue;
};
//复制构造函数代码实现,这是用构造函数初始化列表进行初始化另一个类对象的各个成员
item::item::(cosnt item & rhs):isbn(rhs.isbn),sold(rhs.sold),revenue(rhs.revenue){}
 
2.2在operator=(复制赋值函数),最后必须返回是*this
a a1; //定义好一个a1的类实例,a1的各种在员由a的无参数的构造函数已经初始化所有成员
a b1=a1;//这个时候启用了类的复制赋值函数,它用a1各个成员的值去一一赋值到b1的所有成员,
代码举例:
item& item::opertor=(const item& rhs){
isbn=rhs.isbn;
sold=rhs.sold;
revenue=rhs.revenue;
return *this;
}
 
3.基类与派生类
基类和派生类的this的成员函数都有this指针,用法一样
 
4.设计指导
非成员函数即友元函数和友元类没有this指针的,
类的static函数也是没有this指针的
 

 

抱歉!评论已关闭.