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:"<<radius;
	  point.printPoint(); 
       
}

private:
	float radius;
	Point point;
};

void main()
{
	Circle c;//定义一个对象,调用两个构造函数
               //当创建复合类的对象时,不仅调用复合类本身的构造函数,
              //还将调用复合类的类类型的成员变量的默认构造函数。
      c.printCircle();
	Point p(5,7);
	p.printPoint();
	c.setCircle( 10,p);
	c.printCircle();

	Circle c2(33.0,44.0,55.0);
	c2.printCircle();
	//关于const成员函数增加的代码
     const Circle c3( 1, 2, 3 );
//const对象,只能调用const修饰的成员函数,const位于函数小括号
//后面。普通对象,可以调用const成员函数和非const成员函数。
     c3.printCircle();

     const Circle& c4 = c3;
//const对象,只能赋值给const类型的引用,而不能赋值给普通引用。

     c4.printCircle();

//指向常量的指针,即指针指向对象的值不能修改,但可以指向别的对象。
     const Circle* c5 = &c2; 
     c5->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; 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值