admos

admos 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

寻找的,就寻见。叩门的,就给他开门

个人动态

admos 回答了问题 · 2017-09-19

解决请教两道C++拷贝构造函数vs重载赋值操作符=的面试题

“Example B=A”自然属于重载赋值操作符=,那么“Example B(A)”是否也属于重载赋值操作符=呢?
这里 Example B = A 不是重载赋值,而是隐含的调用了 Example(Example& ) 这个构造函数,如果用户没有定义 就是用合成的函数 bitcopy过去的。同理 Example B(A);

对于这个比较现代的编译器应该都是这么实现的。如果你单独写
Example B;
这是一个声明,但是如果有可用的构造函数(包括是编译器合成的) 那么会自动调用初始化。认为 Example B = A;就存在一次赋值,大概是 Example B = A; 早期会被解释成
Example B;
B = A;
但是从现代编译器的实现上是不正确的,现代编译器没那么傻。

当需要拷贝构造函数时,重载赋值操作符也是需要的;反之亦然.

可否说明出处。Example(Example& )就是拷贝构造函数,这句话的意思是为了兼容上面不同的编译器实现?也就是Example B = A 会出现一次赋值的这种实现。

面试题一:

同样的问题,你理解了上面的就理解了,这道题

面试题二:

应为赋值重载被干掉了,所以可能不兼容上述的多一次赋值的那种编译器实现?

感觉你的这个题目可能有点年代。所以你是在面试哪一家。。

关注 4 回答 2

admos 回答了问题 · 2017-01-11

解决单独js文件可以ajax,放到网页上就不行了。。什么情况?

根据报错来看不是前端的问题啊,form表单提交是可以直接跨域的,目测jq的ajax可能是模拟表单提交的,所以没有报跨域的错,而你用的ajax库则不是。

header('Access-Control-Allow-Origin:*'); 这个正确设置了,把你的网页放在服务器中去跨域,如果你是用本地文件打开,即地址栏是 file:// 开头的,也可能会影响(猜测)

关注 4 回答 3

admos 关注了问题 · 2017-01-11

解决单独js文件可以ajax,放到网页上就不行了。。什么情况?

var ajax = require('../static/js/ajax.js');


// console.log(d);
ajax({
    url:"http://172.16.11.224:8080/data?",
    data: { client_id: '0008', time_stamp: parseInt((new Date().getTime()) / 1000),key:"increment_curve",sign:"hehe",name:"iscc" },
    method: 'GET',
    success:function (resp) {
        // Data = resp;
        console.log(resp.responseText);
        // display("XX");
    },
    error:function (err) {
        console.log(err)
    }
})

单独js文件 用node 运行 没有问题

但是 如果放到 html上,在浏览器上运行就会

clipboard.png

跨域了 我知道,但是我后端设置了

header('Access-Control-Allow-Origin:*');

了的

用jQ没有问题,但是引入一个jq就为了ajax太大了,所以找了一个ajax库
https://github.com/bobiscool/...

求大家解答一些疑惑

关注 4 回答 3

admos 提出了问题 · 2016-08-18

解决C++编译器在分配这样的第一维是变量第二维确定的数组的时候是怎么分配的啊?

    int length;
    cin>>length;
    int arr[length][2];

比如这个,length 待输入,编译器在为 arr 分配空间的时候,遇到length怎么办,是直接把length当成int的最大值来分配吗?

g++ ,我也很奇怪,不能理解为什么

clipboard.png

clipboard.png

关注 5 回答 2

admos 回答了问题 · 2016-05-23

解决js在控制台中运行是正确的,直接运行就是错的

眼睛看得有点花,估计是dom元素没取到,也就是,你在dom元素渲染之前去getElement了,所以出错,建议,先在文件里setTimeout2秒去取,确定是否是这个问题,是的话,就改一下,改成在dom渲染完了取。什么$.ready啊,随便了。

关注 4 回答 4

admos 回答了问题 · 2016-05-23

原型式继承怎么理解

关于原型的回答,sf上挺多的了,譬如相似问题的那里面的好几个,你看一遍就差不多了。
解释一下代码吧:

object函数就是改变构造函数的prototype对象的,比如说你要继承person中的属性,那么就写一个空函数,把空函数的prototype对象修改成person。
然后new 这个空函数,产生实例,譬如说上面的person1,person1中如果定义了name属性,那么访问器访问的时候就返回person1中定义的name
如果没有实例中没有定义name就去产生这个实例的构造函数的prototype对象上找,person2就是为了说明这个意思。

上面的是通俗说法,省略了一些细节,你看几篇长文章就可以了解的更详细。

//补充你后来的问题

F.prototype 就是指向o的,再上面的例子中就是指向person的

关注 3 回答 3

admos 回答了问题 · 2016-04-05

xcode中修改文件,但是编译运行的时候修改没起作用

我找到原因了 是我自己的原因。使用weak是正确的。但是我那里并没有循环引用的情况。。。

关注 1 回答 1

admos 提出了问题 · 2016-04-05

xcode中修改文件,但是编译运行的时候修改没起作用

各位好:

先描述情景:

我使用socketrocket这个库在iOS客户端中编写websocket的客户端的时候遇到一个问题,socketrocket的源码中有一个地方写错了 :

@property (nonatomic, assign) id <SRWebSocketDelegate> delegate;

这个地方在源码中是

@property (nonatomic, weak) id <SRWebSocketDelegate> delegate;

因此我手动改掉weak,但是编译运行之后显示没起作用

一开始怀疑是和预编译文件有关 我把这个库单独重新编译了一遍,并且把building setting下的 Precomplile Prefix Header 设为No 可是仍然不起作用
也尝试了清除xcode的缓存
但是修改均不起作用
所以不知道到底是哪里出了问题。

关注 1 回答 1

admos 赞了回答 · 2016-03-14

解决请教一下大家关于 runtime 的概念问题

引用一楼的

程序一般都有2个阶段,一个是编译阶段,一个是运行阶段,编译阶段主要是语法问题,当程序编译成机器识别的2进制代码后,第二个阶段才是运行,运行时,是指程序运行过程中的操作。

但也有说得不准确的地方,并不是所有的源码都被直接编译成二进制代码,比如Java,是被javac编译器编译为Java字节码(即所谓的.class文件),然后用JRE(Java Runtime Environment,即Java运行时环境)在运行时即时将字节码翻译成二进制代码运行(字节码本身当然不能直接运行,cpu可只认二进制代码)。而C则不同,编译器直接将其编译为二进制文件,一旦开始运行,就全速运行二进制代码,即所谓的编译型语言。而Java则在运行时多了一步解释Java字节码,所以理论上会慢一些。Java算是一种半编译半解释型语言,而像python这种可以说是纯粹的解释型语言,直接将源码拿着解释执行,为了提升速度,有一些工具也可以将解释型语言强行编译成二进制代码。
所谓的运行时,其实就是指程序运行的时候,有的时候也会直接代表运行时环境(就是直接把环境两个字给省略掉了),比如所谓的C语言运行时。像类继承中的虚函数的动态绑定,假设DerivedClass继承自BaseClass,BaseClass中定义了一个虚方法,并在DerivedClass中将其复写(即override),对一个BaseClass指针或者引用调用该虚方法,那么到底是调用DerivedClass中的方法还是BaseClass的方法,则是在运行时根据该指针或者引用的具体指向的对象的类型决定的,在编译期可无法进行判断。还可以举一个例子(因为我对Java语法不是很熟,就不写源代码了。。。),就是Java中类型转换,比如你要将一个BaseClass引用转化为DerivedClass引用,那么在编译期会干什么呢?编译器会检查DerivedClass是不是确实是BaseClass的派生类,转化是不是在语法上就可行。那么在运行时会干什么呢?Java虚拟机会检查该引用是不是确实指向一个DerivedClass对象,是的,才能转化,不是,当然不能转化,而该引用到底是不是指向一个DerivedClass对象,这只能在运行时判断,不能在编译期判断。
至于题主说到的函数指针,我想那个举例子的人的意思大概是,函数指针可以随意指向任何具有该签名式的函数,当你解引用函数指针并调用的时候,具体调用哪个函数,是在运行时由函数指针具体指向的地址来决定的,而在编译期没法判断具体指向哪个函数。(另外,由于函数指针本身就是个指针,所以它指向的位置到底是不是个正确的函数,编译器没法判断,万一你一不小心给了一个错误的地址,那么你的程序在编译的时候很肯能不会报错,而一旦开始运行,多半是会crash的,所以说函数指针不是很安全。)
希望以上能够帮助题主理解“运行时”!

关注 4 回答 4

admos 赞了回答 · 2016-03-14

解决请教一下大家关于 runtime 的概念问题

你需要先了解何谓 静态语言 ,何谓 静态语言

Runtime is when a program is running (or being executable). That is, when you start a program running in a computer, it is runtime for that program. In some programming languages, certain reusable programs or "routines" are built and packaged as a "runtime library."

关注 4 回答 4

认证与成就

  • 获得 19 次点赞
  • 获得 52 枚徽章 获得 1 枚金徽章, 获得 12 枚银徽章, 获得 39 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2015-03-17
个人主页被 303 人浏览