struct pro
{
int age;
int acc;
pro(int age,int acc)//构造函数特征,与结构体同名。不能有返回值void都不行,类似 _启动子程序 里面的代码是类初始化用的,pro就是构造函数.
{
this->age=age;//成员age的值=参数age this在结构体内,用来当做结构体指针使用,当参数与结构体成员同名时,可以用它指定哪个是结构体成员。
this->acc=acc;
}
//创建的构造函数必须要用,如果不想初始化的话,可以在内部再定义一个
pro()这样的话 即使不使用 编译器也不会报错了(主要是报你在使用一个没参数的构造函数,也就是说原本声明的构造函数有参数,pro p;默认你在调用没有参数的构造函数)
pro()
{
}
~pro()//析构函数 相当于 _对象将被销毁() 在构造函数名(与类名相同)前面加一个~符号,用来安全退出“类”
{// 一般作用于类里面有个指针申请了内存空间(堆),在类退出(销毁)的时候需要释放.或者关闭一些类里面用到的.在退出时需要关闭的句柄. 析构函数在类关闭时会被自动调用.析构函数不允许重载只能有一个,不能写返回值。
}
//this指针返回当前结构体指针。函数写在结构体内部不会影响结构体大小。当前结构体大小还是8字节。
int GetAddress()//成员函数
{
return *(int*)this; 先转成int* 再取它的值.。.this指针不能++,--,不允许直接对this重新赋值.它的作用只是指向结构体首地址
}
}
构造函数的作用,当我们创建一个对象,给对象里面的变量成员初始化数据用的(初始化对象)
使用方法
类型 变量名
pro P(1,3) ;这就是调用构造函数,1,3是分别给结构体内部两个成员赋值,当构造函数设为有参数程序时,用这个结构体必须先初始化。因为 pro p;默认是你在调用一个无参构造函数。
或者内部再弄一个同名的构造函数,才可以使用格式: pro p; 来声明变量。
一个结构体内部有多个构造函数,那么它们的关系就是重载。重新载入构造函数.
一个结构体内部有多个同名不同参的 成员函数,那么它们的函数也是重载..重载成员函数.. 就是一个名词...- -没多大意义,重载唯一的好处就是可以少起名字。
构造函数与析构函数都不是必须的
在继承时,先运行的是父类的构造函数,其次才是子类的构造函数.(因为继承时,父类被粘贴在头部)
如果父类有构造函数,子类没有.父类的构造函数一样会被执行。