由买买提看人间百态

topics

全部话题 - 话题: 初始化
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
y**b
发帖数: 10166
1
来自主题: Programming版 - C++的"初始化"小结
以前读C++ Primer第四版中文版给自己写了个摘录,一搜索“初始化”,发现内容还很
庞杂,贴出来供参考,前面是页号。
042 两种初始化: 直接初始化(), 拷贝初始化=
044 变量初始化:类类型调用默认构造函数,局部内置类型不初始化,全局内置类型初
始化为零。
080 容器元素的值初始化(未指定元素的初始化式时):类类型调用默认构造函数,内置
类型置零。
097 数组元素的初始化(同变量初始化规则044):元素为类类型的数组调用默认构造函数
;局部内置数组不初始化,全局内置数组初始化为零。
117 new动态数组元素的初始化:类类型调用默认构造函数,内置类型不初始化,或指定
进行值初始化为零(且只能为零)。
151 new动态对象之初始化:类类型调用默认构造函数,内置类型不初始化,或指定进行
值初始化为任意值。
对提供了默认构造函数的类类型,没有必要进行值初始化, 会自动调用构造函数:
string *p=new string;和string *p=new string();无区别。
对内置类型或未定义默认构造函数的类类型,存在区别:int *p=new int... 阅读全帖
w****x
发帖数: 2483
2
发现这道题属于没见过肯定想不出来,知道怎么解也很难写对。昨天重新写了一下,觉
得学到蛮多的,分享一下。
以前写过一个很挫的DP版本:
int GetEditDist(const char* str1, const char* str2)
{
assert(str1 && str2);
int nLen1 = strlen(str1);
int nLen2 = strlen(str2);
int* rec = new int[nLen2];
bool bFound = false;
for (int i = 0; i < nLen2; i++)
{
if (str2[i] == str1[0])
bFound = true;
rec[i] = bFound ? i : i+1;
}
bFound = (str2[0] == str1[0]); //(str2[0] == str1[0]) not false
for (int i = 1; i < nLe... 阅读全帖
w***g
发帖数: 5958
3
用valgrind测那些位置没有被初始化。花点力气应该能定位出来的。
你在程序里把传进来的struct bar的各个变量的地址都打印出来,然后和valgrind报的
地址对比,就可以知道那些变量没有初始化了。
不过要是服务商有时候初始化有时候又不初始化那就没办法了。
X****r
发帖数: 3557
4
来自主题: Programming版 - 初始化列表问题
你只是引了一段没有解释的代码,没看出来你的理解是什么,我也说不上来你的理解
对不对。
类的构建函数里可以初始化它的基类或是成员,比如:
class D : B {
A a;
D() : B(1,2), a(3,4,5) {}
}
那么D::D()运行的时候,在进入{}里的代码前,先调用B::B(1,2)来初始化D里的B
子对象,再调用A::A(3,4,5)来初始化D里的a成员。这些基类或者成员相应的构造函
数有多少个参数自然这个初始化列表里就有多少个参数。对于不是类的成员,它们的
“构造函数”就是赋初值,只有一个参数。
T*****r
发帖数: 207
5
来自主题: WmGame版 - 我被锁住了?-一直初始化中
我退出了,还是没用,一直在给我初始化。
重新进去,还是初始化。
刷新,还是初始化。
c***i
发帖数: 9
6
来自主题: BuildingWeb版 - IE的插件不初始化
我在我的网页上加了一个 autostart=false>,就是一个声音。用来配合jiavascript一起用的。开始的
时候每次load网页总要出一个小窗口,提示什么activeX初始化之类的,我嫌
他烦,就把这个小窗口下的一个checkmark点了,就disable它了。可这样以后
再也不初始化了,声音也出不来了,而且总是显示插件没有正确初始化。
哪位高手知道怎么样恢复?
谢谢!
l********a
发帖数: 1154
7
c++的,新手
做了个类,类内部外部定义的格式大家就别看了,目前主要是问问流程问题
因为这个类我是递归初始化的,所以有一个构造器是接受一个Test *parent
class Test
{
Test *parent;
list children;
...
// 递归子构造函数
Test(Test *parent) // 构造器,接收一个Test指针,所有子构造器构造出的对象
的父节点
{
...
this->parent = parent; // 这里不知道为什么没有初始化好
for (循环)
{
this->children.push_back(Test(this));
...
}
// 主构造函数,解析文件内容构造
Test(string &fname) // 构造器,接收一个文件名
{
...
this->parent = NULL;
Te... 阅读全帖
w****h
发帖数: 212
8
就是说,比如构造函数
class Point
{
Point (int x):myX(x) {};
private int myX;
}
那么程序可以直接定义Point u1(10)来定义这个实例u1,其myX=10
现在问题是,我想初始化类时传入一个数组,而不是一个整型变量,比如
class HeapSort
{
HeapSort (int* a):dataHeap(a) {};
public dataHeap[100];
}
当我定义
int a[N];
HeapSort h1(a)时,编译报错说cannot specify explicit initializer for arrays
是不是不能初始化就传入一个数组,而必须在函数里显示初始化数组
w***g
发帖数: 5958
9
只听说过变量为初始化就传进去,还真没听说过为初始化就传出来的。
我猜楼主的意思是说这个foo函数在内部malloc了一个struct bar, 然后没有初始化bar
.dblAmount就把指针传出来了。别的还真想不出来怎么把未初始变量传出来。
l********a
发帖数: 1154
10
来自主题: Programming版 - c++类未完成初始化,如何引用this?
c++的,新手
做了个类,类内部外部定义的格式大家就别看了,目前主要是问问流程问题
因为这个类我是递归初始化的,所以有一个构造器是接受一个Test *parent
class Test
{
Test *parent;
list children;
...
// 递归子构造函数
Test(Test *parent) // 构造器,接收一个Test指针,所有子构造器构造出的对象
的父节点
{
...
this->parent = parent; // 这里不知道为什么没有初始化好
for (循环)
{
this->children.push_back(Test(this));
...
}
// 主构造函数,解析文件内容构造
Test(string &fname) // 构造器,接收一个文件名
{
...
this->parent = NULL;
Te... 阅读全帖
l********a
发帖数: 1154
11
来自主题: Programming版 - c++类未完成初始化,如何引用this?

那我的递归定义怎么提出来呢?
其实是需要做个类,有个孩子数组,还有个父亲指针,
初始化的时候,如果传入了字符串s,我就调用一个构造函数a来初始化一个对象o,此
时,o的父亲等于null,o的孩子是把传入的字符串截取一部分(ss),连同自身,传给
另一个构造函数b。
由于b的参数有个指向o的zhizhen,我就想把所有b构造出来的孩子的父亲指针指向传入
的参数o,然后截取字符串加上自身(这已经不是o了,而是o的孩子)递归调用,直到
字符串长度为1。
这样构造完成时,会形成一个串,有点儿像html文件的结构组织.不知道这样说清楚了
吗?对这样的问题,不递归初始化,还有其他办法吗?
o
|-oc1
|-occ1
| |-occc1
| |-...
|-occ2
|-...
|-...
W***o
发帖数: 6519
12
这是一个作业,是应用这个提供的data structure Steque 控制程序里object的流向和
path。
源码贴这里了 http://pastebin.com/VzvcdJKu
我现在对如何使用这个data structure糊涂,从java过来的,不知道在C里面怎么初始
化一个object.
我自己想做一个下面的初始化测试:
typedef struct steque_t steque;
steque *stq;
int i;
for(i = 0; i < 10; i++)
{
steque_item *item = malloc(sizeof(steque_item)); // 这样初始化一个
item
steque_enqueue(stq, item); //然后把item enqueue到stq数据结构里面
}
可是目前这么做的结果是编译时报错:
gcc stequeTest.c -o stequeTest
stequeTest.c: In function ‘main’:... 阅读全帖
d*****l
发帖数: 8441
13
【 以下文字转载自 Programming 讨论区 】
发信人: digital (你是疯儿我是傻?), 信区: Programming
标 题: 温州动车事故启示:重启动(初始化)程序难搞啊!
发信站: BBS 未名空间站 (Thu Jul 28 04:04:49 2011, 美东)
这次温州动车事故,已经有北京的信号设备设计单位道歉了。
估计就是对重启动初始化的情况考虑不够,导致其实现的有限状态自动机模型里面漏掉了
一个极端(极小概率)状态:即备份系统初始启动的时候到底是输出红灯还是绿灯应该由
从被取代故障系统失效之后所发生的情况来决定,确实是挺复杂的,跟Windows重启时候
提示用户到底是“Continue Resume"还是完全重启差不多,机器很难判断的,需要提示。
如果是区间内无车,可以初始化为绿灯,这是最简单最常见的状态;但如果新备份设备
重启
时,区间内已经处于非常站控,在这种状态下就复杂了,得根据区间内有无车辆、多少
车辆
来判决。单单让信号系统刚恢复工作就要判断有无车辆在区间内就够复杂的了。。。
v*********t
发帖数: 7
14
int a = 1;// 1 not 0
int b = (str[0] >= '1' && str[0] <= '9') ? 1 : 0;
能分析下这两行初始化的思路吗
我是用test case测了才写对初始化的
c*********n
发帖数: 128
15
正在做一个text-base game的project.
游戏的初始化的时候,需要生成一系列的实例.
具体生成什么实例并不是在写code的时候给出,
而是通过程序运行的初始化的时候读一个输入文件,看文件里面
要求生成什么实例就生成什么实例(也就是说,读不同的文件,生成的实例是不一样的)
比如文件(以某种定义好的格式)要求生成1个类型为Building的实例和2个类型为Room的实
例,(Building和Room当然是已经定义好了的class)
假设文件格式如下:
Building whiteHouse
Room room101
Room room102
那么怎么在程序中实现这个呢? 就是说读到第一句就知道生成一个Building的实例,并且
生成实例的名字叫作whiteHouse, 读到第二句和第三句知道分别生成两个叫作room101和
room102的Room实例.
w****r
发帖数: 1384
16
来自主题: Programming版 - vector< vector > > 怎么初始化?
有一个问题,就是用到如下数据结构,
vector< vector > > VofV;
其中VofV的某些位置是空的,没有数据的,
有些是带一个列表的,该怎么初始化?
我直接设置比如VofV.at(i).at(j).push_back(data d1) 被说out_of_range。后来领悟
过来没有初始化,所以(i,j)是没有数据的。
另外,VofV的大小是不固定的,随运行时需要变化。
list > >考虑过,凡是实际需要还是vector of vector更符合应
用。
大侠给点意见把。谢谢。
w***g
发帖数: 5958
17
来自主题: Programming版 - 请教c++数组初始化
我需要产生一系列同分布的哈希函数,想存在一个数组里。哈希函数的构造函数接受一
机函数生成器的引用用于产生随机数。这样顺序产生的哈希函数可以各不相同但属
于同

问题是new只能调用无参构造函数; vector允许调用无参或拷贝构造函数。拷贝构造函
数不
行因为产生的对象是完全一样的,而不是独立同分布的。
我目前的做法是定义一个无参构造函数,不干任何事情,再定义一个init方法做真正的
化。vector分配后用一个循环初始化每个元素。但我觉得这种做法不好,因为一开
始生
对象其实并没有真正初始化,如果忘了调用init就会出错。另外同时存在构造
函数和ini
非常混乱。
另一种方法是分配一个指针数组,然后挨个new。用完了挨个delete。感觉比较原始,
得判
断0指针什么的,也很不爽。
重载拷贝构造函数最简单,但是这样就没法保持“拷贝”的语义,也会引起混乱。
不知道有没有什么好的idiom或者现成的library可以用。
w****h
发帖数: 212
18
来自主题: Programming版 - 请问如何初始化out定义的数组
一个方法,变量里需要定一个out 数组,如compose(int a, out int[] b)
方法内部需要初始化这个数组b
但问题是不知道数组b的长度,那么如何初始化b呢?
h********n
发帖数: 1671
19
系统初始化的时候,信号必须是红灯,并且这必须是由硬件强行设置的,就算这时系统
软件给出的是绿灯也不管用。直到系统启动后转入正常运行,收集到足够的信息可以决
定正确的信号的时候,管理复位的硬件才会把管理权交给系统程序。所以备份系统初始
化程序完全不用操这个心。如果出了问题,也是负责强行复位的硬件没有设计好,和备
份系统初始化程序没有关系。
v*********t
发帖数: 7
20
我最近也在研究 DP的初始化
楼主能贴下你写的 Decode Ways的代码么
x****o
发帖数: 21566
21
如果是真的,你就当这是谣言
如果是谣言,你就当我是真的
听说五院有人把我国航天工业的初始化数据库代码,包括截止2013年4月的所有任务编号
性质、初级控制指令类型代码都上传到GoogleCode,导致完全泄密……
v******y
发帖数: 84
22
【 以下文字转载自 Programming 讨论区 】
发信人: victorqy (victorqy), 信区: Programming
标 题: 问一个java基础的初始化的问题,一直搞不明白
发信站: BBS 未名空间站 (Tue Dec 30 11:42:44 2014, 美东)
定义一个class Employee, 里面的id 是static按class建立的顺序分配的
就是static nextId 初始化为1
在initiation block中赋值id,
{
id=nextId;
++nextId;
}
测试的时候,第一个用constructor Employee(n, s),id=1,nextId=2
第二个用Employee(s)
然后用this("Employee #"+nextId,s)调用Employee(n,s)
这是我的问题,这个时候initiaion block
{
id=nextId;
++nextId;
}
已经运行了,id=2, nextId 是3了,为啥在这个
this("Emp... 阅读全帖
n******6
发帖数: 1829
23
【 以下文字转载自 JobHunting 讨论区 】
发信人: newegg06 (egg), 信区: JobHunting
标 题: 【求助】为什么类里面不能初始化vector的大小?
发信站: BBS 未名空间站 (Tue Mar 20 15:04:39 2007)
比方说
#include
using namespace std;
class test{
char str[10];\\this is OK
vector a1(10);\\not OK
}
报错error C2059: syntax error : 'constant'
请问这是怎么回事?
谢谢!
w****r
发帖数: 1384
24
来自主题: Programming版 - vector< vector > > 怎么初始化?
谢谢。
对阿,我怎么测试都不行,在看c++的标准发现必须在初始化的时候就给&a=b类似的赋
值,所以用指针代替了.
l***e
发帖数: 480
25
来自主题: Programming版 - 结构里的变量如何初始化.
需要一个结构,里面设了几个int.想初始化,可直接写=0,报错.
哪位熟悉,指点一下.
多谢,
f*****Q
发帖数: 1912
26
来自主题: Programming版 - 请问如何初始化out定义的数组
找根棍子把设计接口的打一顿就行了。不知道长度初始化啥呀。
N**D
发帖数: 2885
27
用第三方c library, 历史原因,有些变量没有被初始话就传出来了,怎么写个函数来判
断这些变量有无被初始化?主要是int double, google未果, 多谢赐教!
such as:
bool foo(double dblAmount);
t****t
发帖数: 6806
28
这是C++的语法吗?
有没有初始化, C/C++本身是不知道的, 必需借助第三方运行工具
N**D
发帖数: 2885
29
不好意思,问题问的有些急了.服务商提供libary, pass 给我一个 struct bar. 但是
bar里有些变量没有初始化,dblAmount, 我方需要写个函数foo来判断dblAmount是否初
始化.

bar
a****l
发帖数: 8211
30
我看这是神仙也没办法的。谁能光看一个数字就知道是不是初始化过的?
N**D
发帖数: 2885
31
多谢各位意见,不一一回复了。
现在的情况就是这样的。而且这个struct巨大无比,上万个变量...
是不是老的C程序都是不大喜欢初始化变量?hehe..
w***g
发帖数: 5958
32
这东西不想没事,一想起来又拎不清了,想想自己那么多C++代码都是在拎不清的状态下
写的那真是怕人。不是说POD不初始化吗?那怎么vector的初值都是0?这不会是巧
合吧?
a****l
发帖数: 8211
33
规律就是不要相信什么初始化的规律!你不动,就要假设可能是任何东西.Murphy's Law.

态下
是巧
z****e
发帖数: 2024
34
来自主题: Programming版 - 初始化列表问题
那个代码是我自己测试写的,
现在我改成这个:
class B{
public:
B(int i, int j, A a):_obja(a){}//pay attention here
private:
A _obja;
friend ostream& operator<<(ostream& os,const B& b){
os< return os;
}
};
也行。
是不是说 initialization list 的参数可以是成员的构造函数形式,也可以是拷贝构
造函数?就是两种构造函数都能用在初始化列表里面?
s*******e
发帖数: 664
35
☆─────────────────────────────────────☆
Ramboiory (暗黑八神庵) 于 (Tue Jun 23 17:25:14 2009, 美东) 提到:
[问题1]
代码如下:
class Weather
{
public:
static void (Weather::*m_fpAction)();
void StayIn();
void StayOut();
};
void (Weather::*m_fpAction)() = &Weather::StayIn; //初始化
报错如下:
Linking...
1>class.obj : error LNK2001: unresolved external symbol "public: void __
thiscall Weather::StayIn(void)" (?StayIn@Weather@@QAEXXZ)
1>D:\Documents\Study\Research_in_UIUC\Projects\Wireless Scheduling\VC_
Pro
z****e
发帖数: 2024
36
好像说变量数目还是变化的,初始化列表怎么写?
好像是这个问题。
因为以后code的维护,不能每次加一个变量,就重写一次列表?
还有谁记得这个题目?
h****8
发帖数: 599
37
来自主题: Programming版 - vector在constructor里初始化
因为foo1里面你又新定义并且初始化了一个变量_stack,不是原来那个成员变量
把vector去掉,改为 _stack(capacity);就行了
z****e
发帖数: 2024
38
来自主题: Programming版 - 再问C++初始化问题。
为了验证我的一些想法,我写了如下代码,
标号2,4的运行区别不是很理解。
class X{
public:
int i;
};
X* px=new X;
X gox;
int main(){
X* lpx=new X;
std::cout<i< std::cout<i< X ox;
std::cout< std::cout< }
结果:
0
0
0
-1077381160
主要是2,和4,为什么2和4有区别呢?
stack和heap上,初始化还不一样?
stack和静态区不一样是可以理解的。
另外
X* lpx=new X;

X* lpx=new X();
貌似没有区别,实际有没有区别呢?
因为heap上要zero out,所以heap的效率要轻微的低于stack???
B*******g
发帖数: 1593
39
来自主题: Programming版 - 再问C++初始化问题。
http://stackoverflow.com/questions/620137/do-the-parentheses-after-the-
type-name-make-a-difference-with-new
基本上回答了关于new X和new X()的区别
heap或stack上会不会zero initialization...我觉得太偏了吧。。实际中也不会冒险让
compiler来初始化啊
d*****l
发帖数: 8441
40
这次温州动车事故,已经有北京的信号设备设计单位道歉了。
估计就是对重启动初始化的情况考虑不够,导致其实现的有限状态自动机模型里面漏掉了
一个极端(极小概率)状态:即备份系统初始启动的时候到底是输出红灯还是绿灯应该由
从被取代故障系统失效之后所发生的情况来决定,确实是挺复杂的,跟Windows重启时候
提示用户到底是“Continue Resume"还是完全重启差不多,机器很难判断的,需要提示。
如果是区间内无车,可以初始化为绿灯,这是最简单最常见的状态;但如果新备份设备
重启
时,区间内已经处于非常站控,在这种状态下就复杂了,得根据区间内有无车辆、多少
车辆
来判决。单单让信号系统刚恢复工作就要判断有无车辆在区间内就够复杂的了。。。
h********n
发帖数: 1671
41
且不说事故真正原因不可能这么快就查出来,就说软件问题,就一定是重启动初始化的
软件的问题?既然知道这时候该输出红灯还是绿灯很难判断,就压根不应该去作这个判
断,而是必须强制红灯,直到所有输入输出信号就位,这是任何带处理器系统的硬件的
设计常识。这不是Windows重启提示Continue还是Resume这么简单的,这是要出人命的
。如果最后查出来信号系统设计人员和你的想法一样,在这个时候去根据“复杂的情况
”试图判断该输出什么信号,就不难理解为什么会发生这样的事故了。
l********a
发帖数: 1154
42
来自主题: Programming版 - c++类未完成初始化,如何引用this?

的确卡在这儿了,我就想在初始化的时候,让自己的孩子能得到自身这个对象的指针,从
而设置所有孩子的this->parent值
目前看不出哪里有公用的代码啊?能把哪部分踢出去做一个公共函数?
有了公用函数还是无法解决将自身指针传递过去的问题啊?
再次请教
s******y
发帖数: 416
43
用new,malloc不触发初始化函数
循环里有leak
n*****t
发帖数: 22014
44
1、typedef 写错了
typedef struct steque steque_t;
2、malloc 可以这么写:
steque_item *item = (steque_item *) malloc(sizeof(steque_item));
或者:
steque_item *item = (steque_item *) malloc(*item);
3、stq 初始化了吗?
w***x
发帖数: 105
45
这个构造函数 :
public Employee(double s){
this("Employee #"+nextId,s);
}
由于调用了另外一个构造函数,所以它被调用的时候,初始化部分代码不会触发,而是
在这个最终干净的构造函数之前触发:
public Employee(String n, double s){
name=n;
salary=s;
}
z****e
发帖数: 2024
46
来自主题: Programming版 - simple question on C++ initialization list
除了死记硬背,lz可以这样理解这个问题,
在进入constructor的left openning brace { 之前,所有的subobjects 必须被
initilaized。包括基类和所有成员。不论你使用不使用初始化表符。
如果你不使用初始化表符,在进入{ 之前,编译器调用默认的基类构造函数。如果你使用初始化表符,在进入{ 之前,你自己调用基类的构造函数,(包括copy ctr)。
好,这就说明,初始化基类的成员,在进入 { 之前,只能通过编译器调用默认的基类构造函数,或者你自己调用基类的构造函数来实现。而基类在被初始的时候,在进入基类的{ 之前,基类的所有成员,也要被初始化。
所以,Base::_datum,是在进入Base的构造函数的{ 之前被初始化的,而不是你这个派生类的{ 之前。
这个同时也解释了,为什么初始化表符都是比构造函数赋值更高效,因为进入构造函数{ 以前,必须经历默认的初始化,或者自定义的初始化。进入构造函数以后,都是赋值了。
z****e
发帖数: 54598
47
来自主题: Programming版 - 狂搞swift中
我的理解是这样的
因为每一个变量都需要初始化
对吧?如果没有初始化就用,java会出null pointer exception
为了防止未初始化就用,各个语言都有自己的一套mechanism
java其实是不管的,仅仅在main所在的那个class有控制
但是一般的class,变量是否初始化就用,这个其实不管
因为java的class可能会di进来,然后再用,如果控制了的话
反而会出问题
但是ios上不一样,不太可能用到di,所以每次使用的时候
ide就会根据!?来判断是否已经被初始化,并看看用户是否知道
所以当你声明一个变量而没有初始化的时候,就必需加上!?之一
不加ide会报错,如果你确定这个东西一定需要初始化,就加上!
!意思是,你在后面会初始化这个变量,有可能通过某个方法返回之类的
一旦ide搜索到了初始化声明,之后就不管了
如果不确定,则加上?,意思是这个变量可能为空,那么ide对于你后面的使用
就会特意关照一下,诶你这个变量是有可能为空的哦,所以这里会出异常
所以就会要求你做处理,所以当你用了?之后
结果就是,后面你每次用,几乎都要加上?,烦死,所以还是!吧
l******a
发帖数: 415
48
车用久了,车窗玻璃的橡胶导槽由于橡胶老化、灰尘聚集等原因,车窗玻璃在上升时会
往一边倾斜,或出现上升困难、卡滞等现象,这些故障的维修其实很简单,看一遍就会。
清理玻璃升降槽
1、工具
一根筷子、一小块毛巾、一盆清水,把毛巾打湿后拧一下,包到筷子的一头就做成了清
洗工具。
2、方法
把包毛巾的筷子伸进玻璃导槽,可根据导槽的宽度适当增减毛巾包筷子的层数,以便厚
度适中。上下用力在导槽内划动清理,并重复清洗,直到没脏东西为止。
清理完成后,如您正好有保养内饰用的表板蜡就太妙了,在每个玻璃导槽里都喷上一点
,效果会更好。
这种清洗可以解决90%以上的问题,还有很小一部分是由于玻璃升级电机或玻璃升级机
构的问题造成的,这种方法可以改善升级问题,但不能彻底解决,要想彻底解决,就必
须到维修站维修或更换了。
车玻璃丧失升降功能
出现这种情况一般都是电瓶断电、维修保养其他系统时断开了车窗控制模块的电源或地
线、亏电严重时启动发动机等等使车窗的初始化数据丢失造成的,只要再对每个车窗都
做一次初始化就可解决问题。
程序初始化
初始化的方法一般都是打开点火开关,扳着开关上升并保存住,玻璃升到顶后继续扳3
秒... 阅读全帖
s******y
发帖数: 28562
49
来自主题: Military版 - 量子通信之不负责任科普

你说的这个问题貌似就是很多人觉得这个量子通信没有实用保密的论据之一。因为如果
要达到主动防止窃听的地步需要这个初始化的过程。在理论上,如果有办法建立起这么
一个绝对保密的初始化通道,那么把信息通过这个初始化通道来传不就完了?那么还要
这个量子通信干什么?其实这个说法有偏颇,因为如果考虑到很多实际情况,在很短时
间内,是可以有一个近似绝对保密的通道的,但是这些通道不能长时间的保密。比方说
,这个初始化在工程上可以这么解决:在一开始通过BB84 protocol(或者其他方式)来
迅速建立握手信号来进行初始化,然后验证双方身份之后立刻转到用量子通信来联系。
虽然在理论上这个初始化过程也有可能被窃听,但是因为这个时间非常短,就可以在实
践上大大减少被窃听和破解的可能性。比方说大部分大部分破解算法都是需要时间的,
但是等你算出来的时候,对方已经切换到量子通道了,而你针对于握手信号算出来的那
个破解方案只能破解对方在握手时候的通信内容,但是无法用来破解量子通道的通信内
容。
当然,我必须指出,目前中国使用的量子通信其实还是用BB84 protocol来加密的。但
是如果我没有理解错的话,他们的... 阅读全帖
1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)