C++初始化成员列表,符合类,const修饰函数

来源:互联网 发布:奥数 高斯算法 教师版 编辑:程序博客网 时间:2024/05/19 17:25

C++

初始化列表:成员变量的初始化  位置:构造函数函数头之后 以:开头,后面紧跟函数体

//初始化列表(初始化成员变量):声明变量同时初始化

//构造函数中:先声明变量再初始化

//1.const 2.引用类型3.对象成员变量 4.在继承关系中,基类部分的初始化要声明时初始化

class Thing

{

private:

    int x;

    int y;

    int z;

public:

    Thing():x(1),y(9),z(66){}初始化列表

}

 

#include<iostream>

using namespace std;

class Point

{

private:

   float x;

   float y;

public:

   Point(float x_centre,float y_centre)

    {

       x=x_centre;

       y=y_centre;

    }

   void printpoint()

    {

       cout<<"x="<<x<<"y="<<y<<"\n";

    }

};

//复合类:一个类的成员变量是另一个类的对象

class Circle

{

private:

   float radious;

   Point point;

public:

   //在初始化列表中如果没有显示初始化对象成员变量,则编译器会自动调用对象成员变量所属类中的“默认构造”函数初始化

   Circle(float x_centre,float y_centre,float r):point(x_centre,y_centre)

    {

       radious=r;

    }

   void setCircle(float r,Point p)

    {

       radious=r;

       point=p;

    }

   void printCircle()

    {

       cout<<"radious:"<<radious<<" ";

       point.printpoint();

    }

   //初始化列表优先于函数体

   //初始化列表中初始化成员变量时,按照成员的声明顺序初始化

};

int main()

{

   Circle c(10,9,5);

   c.printCircle();

   Point p(12,13);

   c.setCircle(55,p);

   c.printCircle();

   return 0;

}

 

 

//const修饰函数:const修饰函数时只能修饰类的成员函数

//const 修饰成员函数时在成员函数体内不能修改成员变量的值(const成员函数体只能调用const成员函数)

 

//访问函数intgetx()const   {return x;}  const修饰函数 const属于函数头的一部分

//const成员函数体内不能修改成员变量的值

int getx()const

{

 x=10;//这个操作是不允许的

return x;

}

int gety()

{return y;}

 

void printf()const //const成员函数只能调用const成员函数

{

cout<<getx()<<endl;

cout<<gety()<<endl;//不允许

}

//const对象只能调用const成员函数

 

Destructors 析构函数

析构函数:回收对象所占资源

析构函数会被编译器自动调用

对象作用域结束时

销毁对象

delete一个指向“对象”的指针

析构函数的特点: ~circle();

1.   没有返回值

2.   不能带参数()

3.   不能被重载

4.   必须是共有的

如果类中没有提供析构函数,编译器会自动提供析构函数,只会回收栈上的内存

0 0