初识类

实例

封装一个“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 代表对象本身

 

posted @ 2023-05-01 09:01  qlc23333  阅读(20)  评论(0)    收藏  举报