初识类

qlc23333 / 2023-05-03 / 原文

实例

封装一个“Point类”来实现平面上的点的操作。

1、声明

class class_name{
[private:]   
        成员;
public:
        成员;
protected:
        成员;
};

<1>class_name : 类名,一般首字母大写

<2>private,public,protected:访问权限

<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、重载和默认参数值

适用