目录
一:const成员
const成员函数:用const修饰成员函数,也就是修饰隐含的this指针,表明该成员函数中不能对任何类的成员进行修改。
class date
{
public:
void Print()const
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year = 2024;
int _month = 1;
int _day = 1;
};
注意:const对象不可以调用非const成员函数,反之可以。const成员函数内不可以调用其它的非const成员函数,反之可以。
二:初始化列表
初始化列表:以一个冒号开始,接着是以逗号分隔的数据成员列表,每个成员变量括号里放值
public:date(int a, int b, int c)
: _year(a)
, _month(b)
, _day(c)
{}//里面可以加代码的
注意:1.引用成员变量 const成员变量 自定义类型成员(且该类没有默认构造函数时) ,必须放在初始化列表位置进行初始化:
2.只能初始化一次,也就是每个变量只能出现一次
3.初始化顺序就是其声明次序,与初始化列表中的先后无关。
三:static成员
就是类的静态成员,其必须在类外初始化。
class A {
public:
static int a;
};
int A::a = 0;
int main() {
A a1;
cout << A::a << endl;
cout << a1.a << endl;
return 0;
}
注意:1.必须在类外定义,且定义时不能用static。
2. 静态成员函数不属于某个对象,属于所有类,存放在静态区。
3.其没有this指针不可访问其他非静态成员
4.可用类名::静态成员或对象.静态成员访问
5.也受public private protected限制
四:匿名对象
匿名对象(不用取名)的生命周期只有一行 但const引用会延长匿名对象生命周期 引用的出了作用域匿名对象就销毁了
class B {
public:
void printf() {
cout << a;
}
private :
int a=10;
};
int main() {
B().printf(); //不想创建对象 只打算用一次 我们就能用匿名对象 这行结束它就销毁了
return 0;
}
感谢你看到这,大家一起进步!