网站建设与优化及覆盖率方案,浙江建设网一官方网站,微信开发者工具介绍及其优点,着陆页设计网站国内目录 一、友元
1.1什么是友元#xff1f;
1.2如何使用友元#xff1f;
1.3使用友元
1.4使用友元注意事项 二、初始化列表
2.1什么是初始化列表?
2.2为什么要有初始化列表#xff1f;
2.3使用初始化列表
2.4注意事项 一、友元
1.1什么是友元#xff1f;
友元是一…目录 一、友元
1.1什么是友元
1.2如何使用友元
1.3使用友元
1.4使用友元注意事项 二、初始化列表
2.1什么是初始化列表?
2.2为什么要有初始化列表
2.3使用初始化列表
2.4注意事项 一、友元
1.1什么是友元
友元是一种用来突破封装的手段使用友元可以访问到被封装的数据
1.2如何使用友元 比方说我有一个类叫A它有一个成员为int _a;而这个成员我把它封装到private中了那么在类外面显然是不能够正常访问到_a这个变量的但是我们可以通过友元访问到在类里面输入这串代码friend需要访问私有成员的函数名,之后这个函数便可以在类外面访问到A这个类的私有成员 1.3使用友元
正常情况下我们想直接拿到A中的_a编译器便直接报错了 可以看出使用友元建立链接之后test便可以直接访问到A这个类中的_a 1.4使用友元注意事项 (1)友元函数可访问类的私有和保护成员但不是类的成员函数 (2)友元函数不能用const修饰 (3)友元函数可以在类定义的任何地方声明不受类访问限定符限制 (4)一个函数可以是多个类的友元函数 (5)友元函数的调用与普通函数的调用原理相同 二、初始化列表
2.1什么是初始化列表? 初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟一个放在括号中的初始值或表达式。如此便可以初始化对应类的成员变量 2.2为什么要有初始化列表 其实之所以要有初始化列表是因为构造函数直接写入无法定义const引用这些一定义就必须要初始化的变量 2.3使用初始化列表
不使用初始化列表无法初始化const变量 使用初始化列表便可以解决这一问题 2.4注意事项 (1) 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次) (2)类中包含以下成员必须放在初始化列表位置进行初始化引用成员变量const成员变量自定义类型成员(且该类没有默认构造函数时) (3)尽量使用初始化列表初始化因为不管你是否使用初始化列表对于自定义类型成员变量一定会先使用初始化列表初始化 (4)成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关 第四点验证
#includeiostream
using namespace std;
class A
{
public:A():_a(666), _b(_a),_c(10){}void Print(){cout_a _b _c endl;}
private:int _b;int _a;const int _c;
};
int main()
{A a1;a1.Print();
}
可以看出如果是根据初始化列表的顺序进行初始化那么输出的值应该是66666610
实际上为666随机值10这是因为编译器先定义_b再定义_a,最后定义_c 调换一下_b和666的位置果然输出666 666 10 综上所述可以证明 成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关