c++复习——类(2)

1.this指针

this指针是一个指向对象的指针。
this指针是一个隐含于成员函数中的对象指针。
this指针是一个指向正在调用成员函数的对象的指针。
类的静态成员函数没有this指针。//一般只访问静态数据成员  也就没有什么对象可言了  如果访问非静态数据成员还要声明 也更加没有用this的必要了
 
2.
(1)常对象
常对象是指对象的数据成员的值在对象被调用时不能被改变。常对象必须进行初始化,且不能被更新。不能通过常对象调用非const型的普通成员函数(常对象只能调用常成员函数),但是普通对象可调用const成员函数。
    const 类名 对象名[(实参列表)]
    类名 const 对象名[(实参列表)]
虽然常对象中的数据成员只能引用,不可以修改。但是如果一 定要修改,可将需要修改的数据成员声明为mutable,如: mutable int Width; 这样就可以用声明为const的成员函数来 修改它的值了。
 
(2)常数据成员
在类体中将数据成员声明为const型,即为常数据成员。
常数据成员不同于一般的符号常量,它在成员说明时不能被赋值,而是在对象被说明时被赋值。一旦对象被创建,这个值就不允许改变,任何类内外函数只可读它,而不可改变它。
值得注意的是,因为不能对常数据成员赋值,所以对常数据成员的初始化必须要用构造函数的参数初始化列表来完成
 
如声明Length为常数据成员:const int Length; //声明Length为常数据成员
 
下面代码在构造函数中对Length进行赋值,这种用法是错误的:
R ectangle(int w,int len)
{ Width=w; Length=len; } //错误,常数据成员不能被赋值
正确的写法应该是:
Rectangle(int w,int len):Length(len)
{ Width=w; }
 
3.常成员函数
(1)关键字const是函数的一部分,在函数声明和定义部分都必须包含。
int Area() const; //常成员函数Area( )的声明//const放在最后
int Rectangle::Area() const
//在类体外对常成员函数Area( )的定义
{…}
(2)常成员函数可以引用const或非const型数据成员,但只能引用,不可修改。
(3)常成员函数不能调用另一个非const型成员函数。
 
4.常指针
(1)指向对象的常指针
将指针变量声明为const型,这样指针值就始终保持为其初值,不能改变,即指针指向的内存中存放的数值可以改变,但是指针所指向的地址不可以改变。使用常指针,目的是不允许改变指针变量的值,而使其始终指向原来的对象。
类名 * const 指针变量名=&对象名;
如:Rectangle r1(6,6);
       Rectangle *const pr=&r1;
 
2)指向常对象的指针变量
 
const 类名 * 指针变量名=&对象名
如:
Rectangle r1(6,6);
const Rectangle *pr=&r1;
定义的指针pr是指向常对象的指针变量。试图通过pr修改对象r1的值的操作都是非法的。但是指针pr可以指向另外一个Rectangle的对象,
 
Rectangle r2(8,8);
pr=&r2;
但是,此时依然不能通过pr修改r2的值。//具体是为什么 到时候再补上吧
 
 

猜你喜欢

转载自www.cnblogs.com/yuuuuu422/p/12087855.html