www.gusucode.com > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序 > 《C++高级语言程序设计》PPT及全书例子源代码-源码程序/code/C++例题程序/第6章/s6_4/smain6_4.cpp

    //Download by http://www.NewXing.com
//文件名:smain6_4.cpp
//在类中的const数据成员及其初始化

#include <iostream>

using namespace std;

class CPoint						//CPoint类
{
public:
	CPoint(int x = 0, int y = 0);	//构造函数,缺省参数:x=0;y=0
	void Print();					//显示,一般成员函数
	void Print() const;				//显示,常成员函数

private:
	int m_x;						// x坐标
	const int  m_y;					// y坐标,常数据成员
	static const int m_z;			//z坐标,静态常数据成员
};

const int CPoint::m_z = 0;			//静态数据成员的初始化方式

CPoint::CPoint(int x, int y) : m_y(y)	//构造函数,m_y采用了初始化表的方式初始化
{
	m_x = x;//正确。对于一般数据成员可以采用赋值方式也可以采用初始化表的方式初始化
	//m_y = y;//错。对于常数据成员必须采用初始化表的方式初始化,不能够用赋值方式
}

void CPoint::Print()				//显示,一般成员函数
{ 
	cout << "一般成员函数调用:" << m_x << ", " << m_y <<", " << m_z << endl; 
}

void CPoint::Print() const			//显示,常成员函数
{ 
	cout << "  常成员函数调用:" << m_x << ", " << m_y <<", " << m_z << endl; 
}


//测试函数
void main()
{ 

	CPoint oCPoint1(1,1),oCPoint2;	//生成一般对象,实际上是对象变量,其值可以改变
	const CPoint ocCPoint3(3,3);	//生成一个常对象。对象常量。其值不可改变

	//注意后面各对象调用Print()的差别。
	oCPoint1.Print();
	oCPoint2.Print();				//一般对象调用一般成员函数
	ocCPoint3.Print();				//正确。常对象调用常成员函数
}