class student
{
publice:
int age ;
string name;
//构造函数--没有输入和返回值,且名字和类的名字一样
student();
//带参数构造函数,同名的构造函数申明(重载),但是带有参数
student(int a, string b);
static int cnt; //静态成员数据,统计又多少个对象
static int coount; //静态成员函数,返回有多少个对象
}
1.普通成员函数
bool student :: set(int a);
2.构造函数---自动初始化-----对象初始化
优点:对多个成员实现自动化赋值,不需要手动一个一个赋值
student::student()
{
age =20; //在构造函数中,可以对全部成员数据给一个默认值
name = darren;
}
int main()
{
//在主函数建立对象时会自动调用构造函数赋值
student aa ;
}
3.带参数的构造函数,动态初始化对象
student :: student( int a , string b)
{
age = a;
name = b;
}
int main()
{
//在主函数建立对象时会自动调用构造函数赋值
student aa ;
//带参数的构造函数,需要传入参数,个性化定制
student bb ( 25, "darren");
}
4.析构函数---销毁对象,释放内容
需要定义为指针类型才可以动态去释放内存
student ::~student (); //比构造函数多个~,没有输入值,返回值。
删除过程由系统自动进行
在主函数中并不能直接运行
student aa;
delete aa;
正确做法:
student * p =new student(20, " darren");
delete p;
后面补充---不同类内存管理和存放空间的内容
5.常成员函数 --只读不写
const 标识符:不可以修改,只能读取
bool student :: read () const;
可以扩展了解一下:常数指针和指针常数,在面试过程中会经常考到
6。静态成员函数,依赖于类,但不依赖于某个对象
static 标识符:静态标识符 描述全局又与某个对象属性无关
student ::student()
{
age =20 ;
name = "darren";
Cnt = cnt +1 ; //每次调用析构函数,cnt都会加一
}
int student :: count() //静态成员函数的定义 注意这里不写static
{
return cnt;
}
int main ()
{
student aa;
student bb;
aa.count (); //调用count方法,输出cnt 当前建立对象的值 2
bb.count (); // 同样输出2
//只有不依赖对象的静态函数才可以这么写
student::count()://同样输出2
}
static在面试中也是比较容易被问的,需要了解局部变量,全局变量,静态局部变量的生命周期
1388

被折叠的 条评论
为什么被折叠?



