初识类
实例
封装一个“Point类”来实现平面上的点的操作。
1、声明
class class_name{
[private:]
成员;
public:
成员;
protected:
成员;
};
<1>class_name : 类名,一般首字母大写
<2>private,public,protected:访问权限
private成员调用的情景:
a. 在C++的类的成员函数中,允许直接访问该类的对象的私有成员变量。
b. 在类的成员函数中可以访问同类型实例的私有变量。
c. 拷贝构造函数里,可以直接访问另外一个同类对象(引用)的私有成员。
d. 类的成员函数可以直接访问作为其参数的同类型对象的私有成员。
<3>成员:数据,函数
<4>声明时不会为类分配内存,因此c++11前类内数据成员不可以进初始化,现在static修饰的成员依然不可以再类内初始化
实例:
class Point{
private:
double x_,y_;
public:
double x(){return x_;}
double y(){return y_;}
double x(double a){x_ = a; return x_;}
double y(double b){y_ = b; return y_;}
void show(){cout<<"("<<x_<<", "<<y_<<")"<<endl;}
};
2、对象的定义和成员的调用
定义:class_name 对象名;
调用 :对象名.成员;
指针->成员;
Point p1,*p;
p1.x(1);
p->x(1);
3、成员函数
3.1、定义方式
类内:略
类外:类内声明原型,类外定义
r_type class_name::f_name(T1p1,……){……}
例:
class Point{
private:
double x_,y_;
public:
//类内
double x(){return x_;}
double y(){return y_;}
double x(double a){x_ = a; return x_;}
double y(double b){y_ = b; return y_;}
//类外
void show();
};
void Point::show(){cout<<"("<<x_<<", "<<y_<<")"<<endl;}
3.2、常量成员函数
在c++中,为了放止成员函数修改数据成员的值,可以把它设置为常量成员函数:
T f(T1, ……) const;
例:
class Point{
private:
double x_,y_;
public:
double x() const {return x_;} double y() const {return y_;} // 常量成员函数
double x(double a){x_ = a; return x_;}
double y(double b){y_ = b; return y_;}
void show();
};
void Point::show(){cout<<"("<<x_<<", "<<y_<<")"<<endl;}
3.3、重载和默认参数值
适用
4、静态成员
4.1、声明和定义
声明:在类的的声明中,静态数据成员不可以定义,一般在类外定义
定义:type class_name:: name = initial_value;
4.2 访问
4.2.1 通过对象访问
4.3.2 通过类名访问
类名::静态成员名
5 this 指针
this 代表对象自身的地址,并且不能别修改,被指定为const指针,只能在成员函数被调用
*this 代表对象本身

浙公网安备 33010602011771号