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. 必须是共有的
如果类中没有提供析构函数,编译器会自动提供析构函数,只会回收栈上的内存