一.类和对象的理解
1.定义:
- 类是对一组具有相同属性和行为的对象的抽象。
- 类是一种数据类型,对象是这种类型的变量。
- 类的基本思想是数据抽象和封装。
- 类要实现数据抽象和封装,需要先定义一个抽象数据类型(ADT)。
2.抽象数据类型(ADT):
- 抽象数据类型由两部分组成:一组数据和对这些数据的操作
3.类的写法:
class 类名
{
public:
公有成员(一般是成员函数,程序通过public成员函数可以操纵该类型的对象)
private:
私有成员 (只允许类自己的成员函数或友元访问,而类外的函数不能访问)
protected:
保护成员(可以由自己的成员函数,友元和派生类成员访问)
};
注:
C++通过限定成员的访问权限来设置边界,实现信息隐藏。关键字pubic、private和protected被称为访问限定符。访问限定符在类定义中使用。
访问限定符在类定义中的出现顺序和出现次数没有限制。一个访问限定符的作用会持续到出现下一个访问限定符或类定义结束。
4.类中成员函数
class Saledata
{
public:
double totalRevennue();
void read();
void print();
private:
string productNo;
double price=0.0;
unsigned unitSold=0;
};
void Saledata::read(){
cin>>productNo>>price>>unitSold;
}
void Saledata::print(){
cout<<productNo<<":"<<price<<" "<<unitSold<<" "<<totalRevennue()<<endl;
}
注:
- public部分一般是成员函数,private部分一般是数据成员。
- 成员函数在类外定义时,函数名字前面要加类名字和作用域符“ ::”,表示这个函数是在其所属的类作用域内,是这个类的成员函数,不同于全局函数。
- 成员函数的定义虽然处于类定义的花括号之外,但还是在类作用域内,所以可以自由访问类的成员,不需要成员访问语法。
二.this 指针
1. 每个对象都维护自已的一份数据,而成员函数定义是所有对象共享的,如何知道是对哪个对象的数据进行操作呢?这就引入了this指针。
- 每个成员函数都有一个隐含的参数,指向接收消息的对象,称为this指针, X类的this指针的类型是X*
- this指针是一个常量,含有当前实施调用的对象的地址。不能改变this指针的值,也不能取this指针的地址
2.用于理解this指针的含义
class X{
int m;
public:
void setVal(int v) { this->m=v;}
void inc(int d) { this->m+=d;}
void changeVal(int v) { this->setVal(v);}
};//在这段代码中this指针并不需要,只是为了帮助理解this指针的用法
3. this在成员函数中的用处:
(1)区分与局部变量重名的数据成员
(2)返回当前对象
(3)获取当前对象的