[C++]类和对象

类和对象的定义

类是生成对象的模板,而对象是类的具体实例。例如,学生"张三"和学生"李四"是按类"Student"这个模板生成的两个具体的对象。

类的定义

1.类的声明

在C++中,类的声明形式如下:

class 类名称
{
public:
    公有成员(外部接口)
private:
    私有成员
protected:
    保护成员
}

其中,public,private和protected是类成员的访问控制,类的成员分为数据成员和函数成员。

例1:声明Point类

class Point{
public:
    void setPoint(int initX,int initY){//设置点坐标
        x = initX;
        y = initY;
    }
    int getX()
    {
        return x;//获得点的x坐标
    }
    int getY(){
        return y;
    }
private:
    int x,y;
};

2.类成员的访问控制

C++中,类成员的访问控制方式有3种:公有类型(public),私有类型(private)和保护类型(protected).
(1)公有类型
公有类型在关键字public后面声明,它们是类与外部的接口。任何外部函数都可以访问公有类型的数据和函数。
(2)私有类型
私有类型在关键字private后面声明,只允许本类中的函数访问,而类外部的任何函数都不能访问。如果紧跟在类名称的后面声明私有成员,则关键字private可以省略。
(3)保护类型
保护类型与private类似,其差别表现在继承和派生的时候对派生类的影响不同。

3.类的数据成员

类的数据成员与一般的变量声明相同,但需要将它放在类的声明体中。在类的成员互相访问时可以直接使用成员名。

4.类的函数成员

函数的原型必须在类中声明,函数体实现可以在类中直接给出,以形成内联成员函数;也可以在类外给出,但需要在函数名前使用类名加以限定。允许声明重载函数和带默认形参值得函数。

例2 在类外给出函数体实现

class Point{
public:
    void setPoint(int initX,int initY);//设置点坐标
    int getX();
    int getY();
private:
    int x,y;
};
void Point::setPoint(int initX,int initY){
    x = initX;
    y = initY;
}
int Point::getX(){
    return x;
}
int Point::getY(){
    return y;
}

为了提高运行时得效率,对于较为简单的函数可以将其声明为内联函数形式。内联函数体中不要复杂结构(如循环语句和switch语句)。在类中声明内联函数有两种方式:第一种是将函数体放在类的声明中;第二种是类外使用inline关键字。

/*用inline声明内联函数*/
class Point{
public:
    void setPoint(int initX,int initY);
    int getX();
    int getY();
private:
    int x,y;
};
inline void Point::setPoint(int initX,int initY){
    x = initX;
    y = initY;
}
inline int Point::getX(){
    return x;
}
inlint int Point::getY(){
    return y;
}
对象的定义

类的对象是该类的某一特定实体,即该类型的变量,其声明形式如下:

类名 对象名;

例如:

Point p1,p2;

对象访问类中的成员,属于类的外部访问,只能访问public属性的成员,访问方式是:
对象名.成员名
例如:
p1.getX()
'.'操作符指出调用所针对的对象。
完整的类与对象例子:

#include <iostream>
using namespace std;
class Point{
public:
    void setPoint(int initX,int initY);
    int getX();
    int getY();
private:
    int x,y;
};
void Point::setPoint(int initX,int initY){
    x = initX;
    y = initY;
}
int Point::getX(){
    return x;
}
int Point::getY(){
    return y;
}
int main(void)
{
    Point p1,p2;
    p1.setPoint(30,50);
    p2.setPoint(10,20);
    cout<<"p1的坐标:"<<p1.getX()<<","<<p1.getY()<<endl;
    cout<<"p2的坐标:"<<p2.getX()<<","<<p2.getY()<<endl;
    return 0;
}

运行结果如下:
类与对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值