C++类基本常识

一、类的默认方法

C++的类都会有8个默认方法

  • 默认构造函数
  • 默认拷贝构造函数
  • 默认析构函数
  • 默认重载赋值运算符 = 函数
  • 默认重载取址运算符 & 函数
  • 默认重载取址运算符 & const函数
  • 默认移动构造函数(C++11)
  • 默认重载移动赋值操作符函数(C++11)

二、类的成员变量初始化

1 类的成员变量有三种初始化方法:

class Person{
public:
	A():b=5
	{
		a = 1;
	};
private:
	int a;
	int b;
	int c = 10;
}
  • 构造函数体初始化 a
  • 初始化列表初始化 b
  • 内部初始化 c

2 成员变量初始化顺序

  • 类成员变量通过初始化列表初始化时,与构造函数中的初始化列表中的变量顺序无关,只与定义成员变量的顺序有关。
  • 类成员变量通过构造函数体初始化时,初始化顺序由构造函数体中的变量初始化顺序决定,与类成员变量的定义顺序无关系。
  • 在类构造函数中,如果初始化列表和构造函数体同时对一个变量进行了初始化,列表初始化会优先得到执行,接着才会执行构造函数体中的变量初始化。
  • C++11类内部初始化,优先于任何构造函数初始化成员变量。内部初始化后,如果构造函数不显示重新初始化成员变量默认值,成员变量将保持内部初始化值默认值;如果构造函数显示重新初始化成员变量默认值,成员变量将保持构造函数重新赋值。

3 const和static的初始化

const变量在构造列表初始化。
static变量是类变量,一般需要在类外部显示的初始化。

三、C++内存区域

在这里插入图片描述

四、const和static

const变量和static变量都存在于 全局静态区,生命周期是整个程序。

  • 静态局部变量:作为 static 局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与局部变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它!
  • 静态全局变量:也具有全局作用域,它与全局变量的区别在于如果程序包含多个文件的话,它作用于定义它的文件里,不能作用到其它文件里,即被static关键字修饰过的变量具有文件作用域。这样即使两个不同的源文件都定义了相同名字的静态全局变量,它们也是不同的变量。
  • 从分配内存空间看:全局变量,静态局部变量,静态全局变量都在静态存储区分配空间,而局部变量在栈里分配空间。
  • 总结
    static 全局变量:改变作用范围,不改变存储位置
    static 局部变量:改变生命周期,不改变作用范围
  • 静态函数 :在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数也称为内部函数。定义一个内部函数,只需在函数类型前再加一个“static”关键字即可。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值