C++【初始化列表】【explicit】【匿名对象】【Static成员】【友元】【内部类】详解
(且该类没有默认构造函数时)classApublicAinta_aa{}privateint_a;classBpublicBintaintref_aaa_refref_n10{}privateA _aa;//没有默认构造函数//必须定义时初始化int_ref;//引用constint_n;// const3.初始化列表是每个成员定义的地方。不管你写不写,每个成员都要走初始化列表。
目录
初始化列表
在构造函数中给成员函数赋值,并不是真正的初始化,因为初始化只有一次,而构造函数内可以对成员变量多次赋值。真正的初始化是在初始化列表中完成的。
语法
特性
explicit
class A{pubilc:A (int i ):_a ( i ){}private:int _a;};int main (){A aa1 (1);//单参数构造函数的隐式类型转换A aa2 = 2; //用2调用A构造函数生成一个临时对象,再用这个对象去拷贝构造aa2//新一点的编译器会再优化,优化成用2直接构造return 0;}
class A{public:B(int b1,int b2):_b1(b1),_b2(b2){}private:int _b1;int _b2;};int main(){B bb1 = {1,2};const B& ref = {2,2};return 0;}
匿名对象
功能
创建一个没有名字的对象,生命周期只在这一行。
语法
类名(参数)
//有名对象。特点:生命周期在当前局部域
A aa1(1);
//匿名对象。特点:生命周期只有一行
A(2);
使用const引用可以延长匿名对象的生命周期
const A& x = A(1);//此时A(1)的生命周期与x一致。
应用场景
*访问某个函数或者变量,然后立即销毁
*做返回值
A func()
{
return A(5);
}
Static成员
被static修饰的成员是静态成员,静态成员是所有对象共享的成员。
特性
静态成员必须在类外定义,定义时不加static关键字,只在声明时加;静态成员函数可在类内定义。
class A
{
public:
static void func()
{}
private:
static int a;
};
int A::a = 0;
类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问
静态成员函数没有隐藏的this指针,不能访问任何非静态成员
静态成员也是类的成员,受public、protected、private 访问限定符的限制
友元
友元函数
friend viod func();
友元类
语法
friend class Date;
特性
内部类
特性
更多推荐
所有评论(0)