C++--------复合类

写一个复合类,在相应位置写好注释。
class Point
{
public:
	Point() { x =0; y = 0; }
Point(float x_centre, float y_centre)
{
x=x_centre;
y=y_centre;
}

void printPoint() const { cout << "  x=" << x << 
 
                       " y=" << y << endl;}
// const成员函数:成员函数体内,不能修改这个类的成员变量的值
// printPoint里不可以修改x y 的值
private:
	float x; 
float y;
};




class Circle
// A Circle object is a radius and a centre
{
public:
Circle():point(){}; //default constructor

Circle(float x_centre,float y_centre,float r)
      :point(x_centre,y_centre) { radius =r;}
	//初始化列表,在Circle的构造函数里,
//调用了Point类的构造函数,并传递相应的参数,给Point的
//成员变量赋值。
//初始化列表的赋值先发生
void setCircle( float r, Point p ) //const 
	{ 
radius = r;
	  point = p; //圆心
}


void printCircle() const 
//不能通过成员函数修改成员变量的值
//当你不需要在成员函数里修改成员变量的值的时候,建议加上const,可以增加程序的健壮性(鲁棒性)。
	{ 
cout << "radius:"<printCircle();

//常量指针,c6不能指向别的对象,但是可以修改指向对象的值。
Circle * const c6 = &c1;
Circle* const cp = &c2;//cp只能指向非cosnt对象。
cp->printCircle();
cp->setCircle( 10,p);
   //Circle* const p = &c3; //不可以,原因这样有可能会变成可以更改的
const Circle* const pp = &c3;//定义成双cosnt就可以了。 
   //cp = &c3; 

根据const的位置,区分到底哪个是常量——const后面紧跟着的那个就是常量。
}

在函数定义时,使用const的三种方式:

       (1)函数返回值是const引用,即函数的返回值不能被修改。

       const int& func(int);   // a function that returnsa constant int reference

            const int & a =func(5);//将返回值赋给另一个const引用才有意义。

       (2)函数参数是const引用,函数体内不能修改参数的值。

       int func(const int&);   //a function that accepts a constant reference parameter

      

(3)const成员函数(只限于类的定义)

int func(int) const{};    // this must be a member function of a class,

//成员函数不能修改成员变量的值。

 

// the object *this is a constant object

//常量对象必须调用常量成员函数

For example:

         const int& func( const int& ) const;

         const int* func( const int* ) const; 


你可能感兴趣的:(C++--------复合类)