面向对象的程序设计-学习笔记-20-常量对象

/*
常量对象和常量成员
可以用const来修饰常量对象,常量成员函数,常量数据成员。
常量对象的使用
*/
#include<iostream>
using namespace std;
class point
{
int x,y;
public:
point(){x=0;y=0;}//若不小心在函数体内写成这样:int x=0;int y=0;则会报错的
point(int a,int b){x=a;y=b;}
int read_x() const {return x;}//常量成员函数的定义格式:<返回类型> 成员函数名(参数表) const
int read_y() const{return y;}
void move(int x_off,int y_off);
void show() const;//常量成员函数
void show();//一般的成员函数
};
void point::move(int x_off,int y_off)
{
x+=x_off;y+=y_off;
};
void point::show() const
{
cout<<"常量函数被调用!\n";
}
void point::show()//调用一般的成员函数
{
cout<<"一般成员函数被调用!"<<endl;
}
void main()
{

/*定义常量对象的格式:<类名> const 对象名列表;或者const <类名> 对象名列表*/
point const origin,center(60,120);//定义两常量对象,坐标原点和圆心坐标
/*常量对象在定义的同时初始化后再也不能改变它们的数据成员值*/
point p1(30,50),p2(40,80);
cout<<"(1)常量对象:"<<endl;
cout<<"origin("<<origin.read_x()<<","<<origin.read_y()<<")\n";
//cout<<"(2)常量对象:"<<endl;
cout<<"center("<<center.read_x()<<","<<center.read_y()<<")\n";
cout<<"(2)移动之前:"<<endl;
cout<<"p1("<<p1.read_x()<<","<<p1.read_y()<<")\n";
cout<<"p2("<<p2.read_x()<<","<<p2.read_y()<<")\n";
cout<<"(3)移动之后:"<<endl;
p1.move(10,-10);p2.move(60,20);
cout<<"p1("<<p1.read_x()<<","<<p1.read_y()<<")\n";
cout<<"p2("<<p2.read_x()<<","<<p2.read_y()<<")\n";
cout<<"(4)调用一般的成员函数:"<<endl;
cout<<"常量对象调用:";
center.show();//常量对象调用重载同名常量成员函数
cout<<"一般对象调用:";
p1.show();//普通对象p1调用重载同名常量成员函数
}

你可能感兴趣的:(面向对象的程序设计-学习笔记-20-常量对象)