-
2014-08-23 18:34:58
我纠结的问题都在primer上有很好的解答
之前突然想到,为什么要存在冒号这种初始化方法,在google被墙,没办法只能求助于度娘。。。
冒号这种初始化方法,也叫做,初始化列表,也就是变量初始化的时候调用的
意味着,在一个类当中,一个成员变量只能在初始化赋值。
比如: const, 比如引用&。
举个例子:
class A { public: A(i) { a = i; b = i; c = i; } private: int a; const int b; int &c; };
这样是不合法的, 因为b, c只能在初始化时赋值。
所以,只能如此初始化:
class A { public: A(int i):a(i), b(i), c(i){} private: int a; const int b; int &c; };
还有一个比较重要的问题,就是初始化列表的初始化顺序是怎样的?
也就是说,a和b的值分别是多少?class A { public: A():b(a-1), a(b-1) { cout<<b<<endl; cout<<a<<endl; }; private: int a; int b; };
1
-858993461答案就是,初始化列表里的顺序,与初始化顺序无关
这里首先定义的是a,所以a先初始化为b - 1即 -858993460 - 1,-858993461
而b是第二个定义的,所以后初始化b为a- 1即-858993461,为-858993462
如果,没有必要的情况下,还是少用初始化列表,尽量在构造函数中顺序的定义。
更多相关内容 -
访问控制列表,作用及列表号
2018-07-23 12:25:11访问控制列表 控制主机访问个数 读取第三层、第四层包头信息 根据预先定义好的规则对包进行过滤 如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。 如果不匹配第一条规则,则依次...访问控制列表
控制主机访问个数
读取第三层、第四层包头信息
根据预先定义好的规则对包进行过滤
如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配。
如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。
访问控制列表的类型:
标准访问控制列表 基于源IP地址过滤数据包 列表号是1~99
扩展访问控制列表 基于源IP地址、目的IP地址、指定协议、端口等来过滤数据包 列表号是100~199
命名访问控制列表 命名访问控制列表允许在标准和扩展访问控制列表中使用名称代替表号
标准化访问控制列表
全局:access-list 列表号 deny 192.168.1.1 0.0.0.0 反子网掩码 针对一个主机
全局:access-list 列表号 permit 192.168.1.0 0.0.0.255 反子网掩码 针对一个网段
255.255.255.255 减 对应网络子网掩码
通配符掩码:也叫做反码。用二进制数0和1表示,如果某位为1,表明这一位不需要进行匹配操作,如果为0表明需要严格匹配。
例:192.168.1.0/24子网掩码是255.255.255.0,其反码可以通过255.255.255.255减去255.255.255.0得到0.0.0.255
隐含拒绝语句:access-list 1 deny 0.0.0.0 255.255.255.255
0.0.0.0代表任意网络 255.255.255.255 等同于any效果
全局:access-list 列表号 deny host 192.168.1.1 针对一个主机
全局:access-list 列表号 permit any针对一个网段
扩展访问控制列表
将ACL应用与接口
接口模式:ip access-group 列表号 in或out
全局:access-list 100 deny tcp host 192.168.1.1 host 192.168.4.1 eq 80 拒绝访问TCP 80端口
全局:access-list 100 permit ip host 192.168.1.1 host 192.168.4.1
全局:access-list 100 permit ip 192.168.1.0 0.0.0.255 host 192.168.4.1
全局:interface fastehternet 0/0
全局:ip access-group 100 in
全局: access-list 101 deny ip any any 拒绝所有
全局:access-list 101 permit ip any any(允许访问所有)
access-list 101 deny icmp 192.168.1.0 0.0.0.255 host 192.168.2.2 echo
(拒绝192.168.1.0 ping 192.168.2.2)
eq等于、lt小于、gt大于、neq不等于
删除已建立的访问控制列表
全局:no access-list 列表号
No 删除一条 其他命令全部没有
注:扩展与标准ACL不能删除单条ACL语句,只能删除整个ACL。
接口上取消ACL 接口模式取消:no access-list group in 或out
访问控制列表
Show access-lists
命名访问控制列表
命名访问控列表的ACL语句默第一条为10,第二条为20,依此类推。
命名ACL可以删除单条ACL语句,而不必删除整个ACL。并且命名ACL语句可以有选择的插入到列表中的某个位置,使得ACL配置更加方便灵活。
全局:ip access-list extended XXX (名字)
Permit ip XXX.XXX.XXX.0 0.0.0.255 host XXX.XXX.XXX.XXX
Deny ip host XXX.XXX.XXX.XXX host XXX.XXX.XXX.XXX
数字 Deny ip host XXX.XXX.XXX.XXX host XXX.XXX.XXX.XXX 排序
标准命名ACL的配置
全局:ip access-list standard 名字(只能是字母)
Permit host 192.168.1.1
Deny any
接口模式:ip access-group 名字in或out
1 标准访问控制列表的序号范围
A. 1-99
B. 10-90
C. 100-199
D. 以上都不对
参考答案
序号范围为A 选项。
这是因为,标准访问控制列表的序号范围只能是1-99。
2 请描述访问控制列表有哪三种类型
参考答案
标准访问控制列表
扩展访问控制列表
命名访问控制列表
3 请描述扩展访问控制的作用及列表号
参考答案
作用:
可以根据源IP地址,目的IP地址,指定协议,端口等过滤数据包。
扩展访问控制列表号:
100-199
4 请简要描述访问控制列表的处理过程
参考答案
如果匹配第一条规则,则不再往下检查,路由器将决定该数据包允许通过或拒绝通过。
如果不匹配第一条规则,则依次往下检查,直到有任何一条规则匹配。
如果最后没有任何一条规则匹配,则路由器根据默认的规则将丢弃该数据包。
5 扩展访问控制列表配置
tarena公司的路器现配有标准访问控制列表,列表号为1,现因公司不允行所有员工都能访FTP服务,公司具体要求仅允许业务部员工访问FTP服务器(服务器IP为192.168.2.1),业务部员工计算机IP为192.168.1.0/24的网络,拒绝其他所有部门员工访问此服务器的任何服务,应如何添加访问控制列表条目。
参考答案
实现此案例需要按照如下步骤进行。
步骤一:删除标准访问控制列表
首先进入全局配置模式删除标准访问控制列表1:
- Router(config)#no access-list 1
Router(config)#no access-list 1
步骤二:添加扩展访问控制列表
根据题目要求在全局配置模式添加扩展访问控制列表:
- Router(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 192.168.2.1 0.0.0.0 eq 21
- Router(config)#access-list 100 deny ip any host 192.168.2.1
Router(config)#access-list 100 permit tcp 192.168.1.0 0.0.0.255 192.168.2.1 0.0.0.0 eq 21
Router(config)#access-list 100 deny ip any host 192.168.2.1
-
构造函数的成员初始化列表有什么作用?
2016-06-27 10:20:28构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { public: int a; float b; //构造函数初始化列表 CExample(): a(0),b...部分内容来自百度知道!!
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如:
class CExample {
public:
int a;
float b;
//构造函数初始化列表
CExample(): a(0),b(8.8)
{}
//构造函数内部赋值
CExample()
{
a=0;
b=8.8;
}
};
上面的例子中两个构造函数的结果是一样的。上面的构造函数(使用初始化列表的构造函数)显式的初始化类的成员;而没使用初始化列表的构造函数是对类的成员赋值,并没有进行显式的初始化。
初始化和赋值对内置类型(就是基本数据类型)的成员没有什么大的区别,像上面的任一个构造函数都可以。对非内置类型成员变量,为了避免两次构造,推荐使用类构造函数初始化列表。
为什么对非内置类型成员变量,不适用类构造函数初始化列表就会有两次构造呢?
看下边的例子:
输出:B:B() is calledclass B{ public: B() { cout << "B:B() is called" << endl; } B(int x) { cout << "B:B(x) is called" << endl; x = a; } private: int a; }; class A{ public: A(int x) { a = x; b = B(x); cout << "A:A() is called" << endl; } ~A() { } private: int a; B b; }; int main() { A t(1); system("pause"); return 0; }
B:B(x) is called
A:A() is called
但如果把类A里的构造函数改成
就输出:B:B(x) is called.A(int x):a(x),b(B(x)){}
其实说这么多就是说明,当一个类中有非内置类型成员变量时,若没有显示初始化这个非内置类型成员变量,那么编译器会隐士调用该非内置类型成员变量的默认构造函数,而如果用了成员初始化构造函数,对这个变量有了显示初始化,系统就不会再隐士调用它的默认构造函数了,所以这里少了一次构造。
但有的时候必须用带有初始化列表的构造函数:
1.成员类型是没有默认构造函数的类。若没有提供显示初始化式,则编译器隐式使用成员类型的默认构造函数,若类没有默认构造函数,则编译器尝试使用默认构造函数将会失败。
2.const成员或引用类型的成员。因为const对象或引用类型只能初始化,不能对他们赋值。
输出:B:B() is calledclass B{ public: B() { cout << "B:B() is called" << endl; } B(int x) { x = a; } private: int a; }; class A{ public: A() { cout << "A:A() is called" << endl; } ~A() { } private: int a; B b; }; int main() { A t; system("pause"); return 0; }
A:A() is called
我们看到在类A里边有非内置类型成员变量b,在调用A的构造函数时,我们没有显示初始化b,但系统会隐士调用成员类型(这里是b)的默认构造函数
。如果类B没有默认构造函数,则编译器会失败。所以在这种情况下,必须使用初始化列表的构造函数。
初始化数据成员与对数据成员赋值的含义是什么?有什么区别?
首先把数据成员按类型分类并分情况说明:
1.内置数据类型,复合类型(指针,引用)
在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的
2.用户定义类型(类类型)
结果上相同,但是性能上存在很大的差别。因为类类型的数据成员对象在进入函数体前已经构造完成,也就是说在成员初始化列表处进行构造对象的工作,调用构造函数,在进入函数体之后,进行的是对已经构造好的类对象的赋值,又调用个拷贝赋值操作符才能完成(如果并未提供,则使用编译器提供的默认按成员赋值行为)
Note:
初始化列表的成员初始化顺序:
C++初始化类成员时,是按照声明的顺序初始化的,而不是按照出现在初始化列表中的顺序。
Example:
class CMyClass {
CMyClass(int x, int y);
int m_x;
int m_y;
};
CMyClass::CMyClass(int x, int y) : m_y(y), m_x(m_y)
{
}
你可能以为上面的代码将会首先做m_y=I,然后做m_x=m_y,最后它们有相同的值。但是编译器先初始化m_x,然后是m_y,,因为它们是按这样的顺序声明的。结果是m_x将有一个不可预测的值。有两种方法避免它,一个是总是按照你希望它们被初始化的顺序声明成员,第二个是,如果你决定使用初始化列表,总是按照它们声明的顺序罗列这些成员。这将有助于消除混淆。
-
什么是证书吊销列表(CRL)? 吊销列表起什么作用 ?
2014-04-11 17:41:56答:证书吊销列表 (Certificate Revocation List ,简称: CRL) 是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构 (CA) 已经吊销的证书的序列号及其吊销日期。 CRL 文件中还包含证书颁发机构信息、吊销...答:证书吊销列表 (Certificate Revocation List ,简称: CRL) 是 PKI 系统中的一个结构化数据文件,该文件包含了证书颁发机构 (CA) 已经吊销的证书的序列号及其吊销日期。 CRL 文件中还包含证书颁发机构信息、吊销列表失效时间和下一次更新时间,以及采用的签名算法等。证书吊销列表最短的有效期为一个小时,一般为 1 天,甚至一个月不等,由各个证书颁发机构在设置其证书颁发系统时设置。如下图 1 和图 2 所示:
证书吊销列表分发点 (CRL Distribution Point ,简称 CDP) 是含在数字证书中的一个可以共各种应用软件自动下载的最新的 CRL 的位置信息。一个 CDP 通常出现在数字证书的 详细信息 选项卡的 CRL 分发点 域,一般会列出多个使用不同的访问方法,以确保如 Web 浏览器和 Web 服务器程序始终可以获取最新的 CRL 。 CDP 一般是一个可以访问 http 网址, 如下图 3 所示:
讲到吊销列表,就不得不讲讲 OCSP , Online Certificate Status Protocol, 证书状态在线查询协议, 是 IETF 颁布的用于实时查询数字证书在某一时间是否有效的标准。
上面已经提到,一般 CA 都只是 每隔一定时间 ( 几天或几个月 ) 才发布新的吊销列表,可以看出: CRL 是 不能及时反映证书的实际状态的。而 OCSP 就能满足实时在线查询证书状态的要求。它为电子商务网站提供了一种实时检验数字证书有效性的途径,比下载和处理 CRL 的传统方式更快、更方便和更具独立性。请求者发送查询请求, OCSP 服务器会返回证书可能的三个状态:正常、吊销和未知。
OCSP 服务由独立的 OCSP 服务器来提供服务,目前WoSign新证书颁发系统支持 OCSP 方式查询证书状态。 OCSP 也是一个可以访问的 http 网站,如下图 4 所示:
那么,证书吊销列表起什么作用?为了演示,我们在测试站点上部署了一张吊销了的SSL证书,https://revoked-demo.wosign.com:444/ 。上面已经提到是供有关软件查询证书是否被吊销,还是让我们来看看浏览器是如何查询吊销列表的。 浏览器在使用 https:// 访问已经部署了 SSL 证书的网站时,一定会先检查此 SSL 证书是否已经被吊销,也就是说会查询吊销列表或 OCSP 服务, 如果此证书已经被证书颁发机构吊销,则会显示警告信息: “此组织的证书已被吊销。安全证书问题可能显示试图欺骗您或截获您向服务器发送的数据。建议关闭此网页,并且不要继续浏览该网站。 ”
值得注意的是: 目前有些 CA 颁发的证书和大部分自签SSL证书都没有提供吊销列表 (CRL) 服务或证书 吊销列表分发点是不可访问的 ,当然更别提 OSCP 服务,这是非常危险的,因为如果证书丢失或被盗而无法吊销的话,就极有可能被用于非法用途而让用户蒙受损失。
-
c++构造函数中初始化列表的作用和机制
2014-07-22 15:39:55c++中构造函数有初始化列表, -
用vue实现一个虚拟列表
2020-06-05 16:02:46上次分享了超长列表分片加载的方式,这种方式现在一般不会使用,因为dom会变的无比庞大,页面会很卡,今天分享用vue实现一个虚拟列表的简易实现,本来是想用原生实现一个,后来觉得直接使用computed,简单一些。... -
Python列表拷贝复制函数copy()函数的作用
2020-12-05 23:09:06列表是可变类型数据,且实际操作过程中经常需要队列表进行增加、删除、修改列表里面的元素, 所以经常需要复制拷贝原始列表进行备份。 Python使用copy()函数进行备份复制列表。 程序实例: list_val = ["www",... -
华为-ACL-访问控制列表(基础理论与配置实验详解)
2020-07-29 13:50:14访问控制列表(Access Control List,简称ACL)是根据报文字段对报文进行过滤的一种安全技术。访问控制列表通过过滤报文达到流量控制、攻击防范以及用户接入控制等功能,在现实中应用广泛。ACL根据功能的不同分为标准... -
C++11初始化列表与参数列表的作用
2016-12-20 16:18:18对于构造函数而言,初始化列表的作用无非是在对成员变量申请内存时进行初始化。执行构造函数时,先执行初始化表的内容,若初始化里面里面没有数据,侧编译器安装系统默认的方式对成员变量申请内存,进行系统默认的... -
FreeRTOS高级篇1---FreeRTOS列表和列表项
2016-04-19 14:34:13FreeRTOS内核调度大量使用了列表(list)这一数据结构。我们如果想一探FreeRTOS背后的运行机制,首先遇到的拦路虎就是列表。对于FreeRTOS内核来说,列表就是它最基础的部分。我们在这一章集中讲解列表和列表项的结构... -
python中在列表前面加星号(*)的作用
2021-03-29 17:04:09作用是:将列表解开成几个独立的参数,传入函数。类似的运算符还有两个星号(**),是将字典解开成独立的元素作为形参。 例如:add(a,b)函数需要输入两个数,在主函数中list = [1, 2] c = add(*list),此处*list就... -
【Python自动化测试5】列表与元组知识讲解
2022-01-05 09:50:28本文章主要讲解的是关于Python中列表的操作、常用方式、注意事项等内容,是列表的专题讲解。 大部分内容都是在后续的自动化文章中会使用到的内容,小部分内容了解即可,初识Python的同学建议都了解一下,话... -
Python 列表查找,如何在列表中查找项目或者元素索引【翻译】
2022-02-26 17:07:23Python 列表查找,如何在列表中查找项目或者元素索引 在本文中,你将学习如何在Python中查找列表中包含元素的索引。 有几种方法可以实现这一点,在本文中,你将学习三种不同的方式用于查找列表元素的索引 三种技巧... -
Python数据结构-列表
2021-12-24 10:29:01这里可以得到一个结论:列表元素指向相应的值,这也产生了一个十分有趣的作用。这里让一个列表元素指向列表本身,创建了一个自引用的数据结构;打印输出中的 [...] 表明,Python可以识别自引用,不会愚蠢的不断打印... -
为什么安卓的APP都要读取手机中已安装的应用列表
2017-05-06 10:08:52最近在看运行时权限,发现不大明白APP获取手机已安装的应用列表有什么用, 于是,就上网查了下,就做个总结: 1.方便应用间进行唤醒 例如:装个百度贴吧, 它会主动读取你手机是否有百度家族相关应用,若有,可... -
C++构造函数初始化列表的优点
2016-02-22 16:26:061,以下情况必须在构造函数时写成初始化列表形式: 1)类成员中存在常量,如 const int a; 因为常量只能初始化不能赋值 2)类成员中存在引用,同样的只能初始化不能赋值 3)类成员的基类或成员类没有定义默认... -
HTML列表标签及自定义列表的应用
2020-03-13 17:31:261.无序列表 无序列表是一个项目的列表,此列项目使用粗体圆点(典型的小黑圆圈)进行标记。 无序列表始于 <ul> 标签。每个列表项始于<li>。 也可以通过CSS改变项目符号,也可以自己设置图片,如<li ... -
作用域插槽列表的简单应用实例
2017-07-25 17:24:43作用域插槽列表的简单应用实例 -
列表推导式与字典推导式,滚雪球学 Python
2021-03-03 21:50:58列表推导式、字典推导式、集合推导式、生成器初识 -
vue2.0 列表项移除过渡动画作用在最后一个元素的bug修复
2018-07-02 21:17:38见如下动图,列表移除动画过渡的效果作用在最后一个元素上,结合看了vue2.0官网,始终找不到原因!见如下代码如下:<div class="option-wrapper"> <transition-group name="... -
【技能树共建】Python 列表推导式
2022-04-21 17:46:56print("代码运行时间:", e_time-s_time) 运行结果: # for 循环 代码运行时间: 1.3431036140000001 # 列表推导式 代码运行时间: 0.9749278849999999 在 Python3 中列表推导式具备局部作用域,表达式内部的变量和... -
Python 列表详解
2021-09-11 17:36:20Python 列表详解什么是列表列表的定义列表的操作访问列表元素列表的切片列表的相关运算列表常用方法 更多内容,可以微信搜索[公][众][号]【郑大钱呀】,关注我们,一起学技术! 什么是列表 所谓列表就好像是把一堆... -
python列表 (list)
2021-04-27 03:12:11python列表 (list)python的列表(list)是使用频率最高的一种数据结构, 很像C++中的vector 和 java 中的ArrayList, 是大小可动态变换的数组。 单个列表可以同时存储多种数据类型, 而不一定非得是同一种数据类型。... -
Python列表函数&方法
2018-10-16 20:18:06列表元素个数 max(list) 返回列表元素最大值 min(list) 返回列表元素最小值 list(seq) 将元组转换为列表 Python包含以下方法: 方法 list.append(obj) 在列表末尾添加新的对象 list.count(obj) 统计某个元素在列表... -
python3中 for 循环中循环变量的作用域问题
2020-10-24 10:00:43文章目录python3中 for 循环中循环变量的作用域问题1-1 来看一个例子1-2 来看第二个例子1-3 循环变量 覆盖 外层变量的问题2 python 变量的作用域的问题2-1 来看一个 全局变量的例子2-2 如何修改一个全局变量呢2-3 在... -
Python学习--列表
2021-03-17 12:15:241. 列表的创建列表(list)是Python中一个非常重要的类型,用于管理一组数据,列表的...Python中单引号和双引号具有相同的作用2)使用逗号分隔数据,整个列表包含在一个中括号中3)适用赋值操作符将一个列表赋值给一个... -
六、用户列表
2021-03-21 12:43:08(1)通过路由的形式展示用户列表组件 1. 创建Users组件 2. 并添加/users路由,将其作为home的子路由 3. 效果图 (2)在Session Storage 中保存左侧菜单的激活状态 实现点击菜单按钮时,使该菜单... -
Python如何清空列表?清空列表的4种方法(代码示例)
2021-01-13 19:02:55方法1:重新初始化列表可以重初始化列表,初始化该作用域中的列表时,将不带值的初始化列表,这样就可以让列表清空。代码示例:List = [5, 6, 7]print(‘List清空前:‘, List)#重新初始化列表List = []print(‘Lis.... -
HTML常用标签之列表标签
2022-01-20 07:40:49列表标签的主要作用是页面布局,它相比表格标签,更加整齐、整洁、有序,作为布局更加自由和方便 关于表格标签可以点这里→HTML常用标签之表格标签 一、无序列表 <ul>标签表示HTML页面中项目的无序列表,... -
无序列表
2018-08-27 16:49:37作用:给一堆数据添加列表语义,也就是告诉搜素引擎告诉浏览器,这一顿数据是一个整体 2.html中列表标签的分类 1.无序列表(最多)(unordered list) 2.有序列表(最少)(ordered list) 3.定义列表(其次)...