h********0 发帖数: 74 | 1 那位 大虾 解解:
加一个让文件指针返回到文件头部的函数reset(),要求实现把文件指针移
到任意字节处的函数seek(int n_bytes)。 |
|
z*****n 发帖数: 633 | 2 函数本身也是个指针,虚拟函数就像一个变量还没有确定要赋什么值。具体要调用哪个
method是后期应用中具体对象来确定,所以pure virtual function=0 和一个
指针先初始化成NULL的道理一样,表明暂时不指向任何区域,确保将来被错误引用。就
这么简单。
当然大家多数做软件工程师都是混饭吃,谁计较那么细,什么什么原理。就算明白这些
原理,不等于就一定能写出好代码,但是有的人可能借此可以看出,你对你所做的事情
的态度是认真的还是混混。我过去面试人就是给人一段代码看看,让对方说说,这代码
的意思,优缺点,假如发现某问题怎么调试。从问题看,这个公司要的软件工程师似乎
偏底层。当然也可能是因为他本人比较了解这些。 |
|
b**********i 发帖数: 11 | 3 静下来回忆一下今天的online test, 完全不用担心语言的问题。会java的一样没有问
题。不会出现因为语言而做不出来的。
1. Code: 给一个listnode, 给一个int 的值,让你删除链表中,等于给定值得所有
node。
2. Fix bug: 给定一个sorted数组,一个int。 如果有一组数的差等于给定的int,就
说他们是一对,问有多少对。给了你一段代码,让你修改。
3. 给一些小数,问哪个是可以用2 present的
4. 一个人写下1-1000中的一个数,另一个可以问问题答yes、no。问用最优策略 最少
能问多少次得到答案
5. 给你一个单链表,表头一个指针,表尾一个指针,问哪个操作需要与链表长度相关。
6. 一个新语言学习题。就是给定一些规则,问下列哪些是满足的。
7. stack的一个push和pop操作,给定一个规则,问初始i取什么值
8. 给一段代码。问里面两个变量的关系。
9.给第一段代码,问call 一个函数的值。
10.一个像素的灰度的题。记不了了。
11. 一个简单多线程的题,问你哪个结果。
12.给一段代码,问你输入x和函数f(x)的关... 阅读全帖 |
|
d**********o 发帖数: 1321 | 4 第二次作业
我以为自己对这门课的戒备心到第一个项目交上去就可以平复了,可我高兴得还太早,
到了第二个项目时,subproject2a, subproject2b也都还是很简单的,可到了写最后一
个项目的时候,就赫然发现subproject2a写的copy subtree的函数prototype并不满足
最后一个小版块的要求,于是对我来说,这个项目的最后一小版块就需要从头再来(重
新再了更好用的copy函数)。
写到这个项目的最后一步,就真正体会老师基础代码的良苦用心,没有这个葫芦的存在
,不知道有多少人能真正完成这个项目(至少我也还是有所倚耐的),每一步都不难,
但很tedious~~ 比如,我想sub-tree mutation, mutation 的 terminal 与 non-
terminal 的比例分别是 10% & 90% respectively。这个很好控制,就是概率嘛;可在
90%里,我产生non-terminal sub-tree mutation 节点的方法是先产生随机数,再根据
随机数去寻找定位那个节点(把 root 数为1),返回指向这个节点的指针,和指向该... 阅读全帖 |
|
d**********o 发帖数: 1321 | 5 第二次作业
我以为自己对这门课的戒备心到第一个项目交上去就可以平复了,可我高兴得还太早,
到了第二个项目时,subproject2a, subproject2b也都还是很简单的,可到了写最后一
个项目的时候,就赫然发现subproject2a写的copy subtree的函数prototype并不满足
最后一个小版块的要求,于是对我来说,这个项目的最后一小版块就需要从头再来(重
新再了更好用的copy函数)。
写到这个项目的最后一步,就真正体会老师基础代码的良苦用心,没有这个葫芦的存在
,不知道有多少人能真正完成这个项目(至少我也还是有所倚耐的),每一步都不难,
但很tedious~~ 比如,我想sub-tree mutation, mutation 的 terminal 与 non-
terminal 的比例分别是 10% & 90% respectively。这个很好控制,就是概率嘛;可在
90%里,我产生non-terminal sub-tree mutation 节点的方法是先产生随机数,再根据
随机数去寻找定位那个节点(把 root 数为1),返回指向这个节点的指针,和指向该... 阅读全帖 |
|
c*********e 发帖数: 16335 | 6 函数名字本身就是一个指针,难道就是找到这个指针,来调用这个函数? |
|
t**g 发帖数: 1164 | 7 我想写一个函数f
返回值是N维空间的点坐标
比如有时返回3个一维空间的点坐标(所以每个点包含一个坐标值)
有时返回2个二维空间的点坐标(所以每个点包含2个坐标值)
我想设置这个函数返回值是一个指向array的指针p
(比如返回一个指向二维array的指针,这个array包含点坐标)
可是好像不太行得通
因为p可以指向二维array,也可以指向3维
而且array的size必须事先确定
可是size要到运行时才知道
所以有什么好的建议么?
thx |
|
B****h 发帖数: 955 | 8 C++中以指针为参数的函数,例如
void myFunc(int* arrayA, int len);
C#中希望调用这个函数以得到arrayA的值,但是C#没有指针,用什么方式才行呢? |
|
m*******o 发帖数: 264 | 9 #include
using namespace std;
char* f(int i);
void main()
{
cout << f(1) << endl;
}
char* f(int i) {
char buffer[20];
strcpy(buffer, "test");
return buffer;
}
函数f到底返回的是什么,应该是个指向char类型的指针吧。
但为什么cout << f(1); 输出的是整个array: test?
还有return buffer; 返回的是buffer[20]的初始地址吧?
返回指针的函数的返回值必须是个地址吗? |
|
b********r 发帖数: 1080 | 10 我的理解是指针指向了函数中的临时变量.函数返回时,变量被自动消除.
这是指针指向的地址应该被释放了.所以结果至少应该是undefined.
我理解错了? |
|
z****e 发帖数: 2024 | 11 不过有一点没有理解,
好像如果不是虚函数,没有继承,自己调用成员函数不会错。
好像,this指针,所指向内容,并没有清零。
不知道为什么
memset(this,0,sizeof(*this));
不把this指针所指向内容也给清零了?
this->regular_member_function();
好像是对的。 |
|
z****e 发帖数: 2024 | 12 大家能解释解释:
调用成员函数,不需要生成对象。
我有一点疑惑,就是this指针还是需要pass到函数里边的,但是这个this指针不需要有
具体对象是么?
那this指向的内存是什么呢? |
|
a***y 发帖数: 2803 | 13 其实用指针表示字符串很好啊,反正2者基本上通用了.类似的还有,用指针表示函数首地
址,甚至函数名字.
strin
committee
libra |
|
h*******s 发帖数: 8454 | 14 不是static的函数调用的时候系统自己给牵头加上一个this指针作为第一个参数
如果没有instance,哪儿来得this指针啦
不是static的函数可以修改instance自己的私有变量啊,虽然只有一个,但是从哪里调
用还是有区别的
copy。 |
|
l********a 发帖数: 1154 | 15
那我的递归定义怎么提出来呢?
其实是需要做个类,有个孩子数组,还有个父亲指针,
初始化的时候,如果传入了字符串s,我就调用一个构造函数a来初始化一个对象o,此
时,o的父亲等于null,o的孩子是把传入的字符串截取一部分(ss),连同自身,传给
另一个构造函数b。
由于b的参数有个指向o的zhizhen,我就想把所有b构造出来的孩子的父亲指针指向传入
的参数o,然后截取字符串加上自身(这已经不是o了,而是o的孩子)递归调用,直到
字符串长度为1。
这样构造完成时,会形成一个串,有点儿像html文件的结构组织.不知道这样说清楚了
吗?对这样的问题,不递归初始化,还有其他办法吗?
o
|-oc1
|-occ1
| |-occc1
| |-...
|-occ2
|-...
|-... |
|
l********a 发帖数: 1154 | 16
的确卡在这儿了,我就想在初始化的时候,让自己的孩子能得到自身这个对象的指针,从
而设置所有孩子的this->parent值
目前看不出哪里有公用的代码啊?能把哪部分踢出去做一个公共函数?
有了公用函数还是无法解决将自身指针传递过去的问题啊?
再次请教 |
|
l********a 发帖数: 1154 | 17 来自主题: Programming版 - map析构
跟踪了2天才找到这个问题,难道dll内自定义的类不能使用stl容器吗?
像我这种定义的容器数据非指针,该怎么释放呢?
没有其他解决办法吗?我这个map没有跨dll传递啊?
在testGA类定义里面声明,
构造函数里面map.insert(make_pair())添加内容,使用完后立即clear(),
在析构函数内没有操作map,因为已经被clear()了,又不是指针,无法delete
下断后出错在~testGA的时候会调用~map,
testGA.dll!std::map,std::
allocator >,double,std::less
char>,std::allocator > >,std::allocator
char,std::char_traits,std::allocator > const ... 阅读全帖 |
|
b***i 发帖数: 3043 | 18 很好。现在发现我们的Python代码很多次使用了C++返回的指针,然后传给一个C++函数
来构造智能指针。这样是不对的
for..
xx = dict.get_somethin(...)
reg = ...
reg.add(xx)
我提出的解决方案是,进行复制。幸好我们的类都有Copy这个函数。
for..
xx = dict.get_somethin(...)
reg = ...
reg.add(xx.Copy())
现在的问题是,在SWIG怎么做?
%newobject *::Copy;
对吗?怎么才能知道是不是对的?在cxx文件能看到有什么改变吗?还是在py文件里可
以看到?
returned
However
to
you |
|
b***i 发帖数: 3043 | 19 好像从函数内的栈上临时变量返回然后生成堆上的也是可以RVO的,所以声明vector的
指针完全没有必要。
但是vector内部存指针好像有必要。毕竟这个vector上存的类可能有继承关系,虚函数
什么的。
-c
heap |
|
e********e 发帖数: 12 | 20 来自主题: JobHunting版 - 问道编程题 我的意思是除了可以使用函数返回变量值,还可以通过改变参数的方式来获取这个值,
这个可以
通过提供指针参数的方式,因为你要返回一个指针,所以使用指针的指针作为参数 (
int **ppids)
当然这种方法,需要动态分配内存。
不是说改变 500 行么,所以这里提供一种思路..... |
|
m**a 发帖数: 1208 | 21 Chapter 4
26
“乓!乓!乓!起床了!” 有人猛敲禁闭室的门。“哗!”禁闭室的门上的小窗打开
。“乒!乒!”从小窗外扔进手铐和脚镣,手铐和脚镣间连有铁链。“自己铐上!快点
!” 有人训斥道。
我磨磨蹭蹭地边穿衣服,边问:“早饭呢?”
“想吃早饭?先吃吃这个!”门外的人按门上的按钮。
“吱吱吱,啪!” 一道电弧从天花板窜出,我被电得跳起来,倒在地上,痛得冷汗直
下。我现在明白为何这个禁闭室是全金属的了。这天花板上吊个环型负极,地板是正极
,一接上高 压电,里头的人就淋电雨。
“喂!充饱电了吗?”外头的人又问。
“饱了!饱了!”我艰难地答道。
我的肚子真的很饿,昨天晕虫洞,能吐光的都吐了,晚饭又没吃,腹中空空,肚中的酸
水和坏水一同在翻腾。我看外头的人没注意我,将手铐挂在天花板的 负极上,脚镣钩
在门上的突起,然后大声说道:“长官!我不会用手铐和脚镣啊。”
“不会?再吃吃这个,给你的笨脑瓜充充电!”外头的人又猛按门上的按钮,结果可想
而知。他被电得飞弹出去,头撞在门对面墙上,没声了。
我从门上小窗望出去,见那看守倒在地上,头上冒血,腰上挂着一沓明晃晃的电子钥匙
牌。我想,如用这个... 阅读全帖 |
|
m**a 发帖数: 1208 | 22 【 以下文字转载自 LeisureTime 讨论区 】
发信人: moha (moha), 信区: LeisureTime
标 题: 浮城之恋 26-42
发信站: BBS 未名空间站 (Sat Aug 30 02:00:42 2014, 美东)
Chapter 4
26
“乓!乓!乓!起床了!” 有人猛敲禁闭室的门。“哗!”禁闭室的门上的小窗打开
。“乒!乒!”从小窗外扔进手铐和脚镣,手铐和脚镣间连有铁链。“自己铐上!快点
!” 有人训斥道。
我磨磨蹭蹭地边穿衣服,边问:“早饭呢?”
“想吃早饭?先吃吃这个!”门外的人按门上的按钮。
“吱吱吱,啪!” 一道电弧从天花板窜出,我被电得跳起来,倒在地上,痛得冷汗直
下。我现在明白为何这个禁闭室是全金属的了。这天花板上吊个环型负极,地板是正极
,一接上高 压电,里头的人就淋电雨。
“喂!充饱电了吗?”外头的人又问。
“饱了!饱了!”我艰难地答道。
我的肚子真的很饿,昨天晕虫洞,能吐光的都吐了,晚饭又没吃,腹中空空,肚中的酸
水和坏水一同在翻腾。我看外头的人没注意我,将手铐挂在天花板的 负极上,脚镣钩
在门上的突起,然后大声说道:“长官!我... 阅读全帖 |
|
a****n 发帖数: 1887 | 23 主要问题在于const函数
this指针是X* const ,
两个operator 函数的转化形式为
1)
成员const X& operator+(const X&r) const;
==>
非成员const X& operator+(const X&, const X&r);
2)
成员const X& operator+(int m);
==>
非成员const X& operator+(X&, int m);
对于a = b + c + 5;
b + c 返回为const X&, 作为第一个参数传入第二个函数, 就不match了
(const X& ---> X&), 如果第二个函数是常函数就可以 |
|
r**h 发帖数: 1288 | 24 因为A的析构函数没有定义成虚函数
从而A类指针指向B类时调用析构函数找到的是A析构函数的入口地址,B的析构函数未被
执行 |
|
a****s 发帖数: 559 | 25 明显的一个错误是 new []/free 配一对。
很奇怪的用法是void _init_data()函数,居然要在函数外赋长度值,然后在函数内用
其做拷贝,很诡异。
一个不严谨memcpy,最好是memcpy(_data, s, sizeof(char)*_len); 默认char为一个
byte不是好习惯。
另一个不严谨的是析构函数里,释放内存后,_data应置NULL,_len应置0.
原网页中,在实现的转移赋值函数里,没有先释放被赋值对象的内存,直接进行指针赋
值,严重的内存泄漏。 |
|
y****e 发帖数: 23939 | 26 首先,这个程序在Linux下用g++编译通过,没有任何问题。但是在Visual C++下编译时
,编译通过,但是出现下面链接错误:
error LNK2019: unresolved external symbol _gsl_vector_ptr referenced in
function "void __cdecl refalidf(struct gsl_vector const *,void *,struct gsl_
vector *)" (?refalidf@@YAXPBUgsl_vector@@PAXPAU1@@Z)
有这样两个函数:
1. static double refalifn(const gsl_vector * v, void *params)
2. static void refalidf(const gsl_vector * v, void *params, gsl_vector *
df)
问题出在第二个函数上。如果只有第一个函数,程序在VC++下也能编译链接通过。可是
这两个函数实在没有太大差别啊?难道是第二个函数有两个gsl_vector *指针?
谢... 阅读全帖 |
|
y**b 发帖数: 10166 | 27 class Base(该不该有纯虚函数getX, getY, getR?)
class D1和class D2公有继承于Base
D1增加成员x,y, 实现getX, getY
D2增加成员x,y,r, 实现getX, getY, getR
Base *pb = new D2;
D2 *pd2 = new D2;
1. Base如果没有getX,getY,getR等纯虚函数,pb就无法调用getX, getY, getR,
而只有pd2可以。但是这显然失去了指针的多态性?
2. Base如果有getX,getY,getR等纯虚函数,但自身并没有x,y,r成员,这在概念上
是不是一种矛盾呢?而且设置这些虚函数很显然违背了依赖倒置原则。Base根本就不
应该有这些函数?
3. 还是根本就不应该设计继承关系? |
|
d*******8 发帖数: 785 | 28 周三接到了意料之中recruiter的Email据信,为了攒Rp,写下面经
面的是VOD Team的SDE,是版上一个大哥贴的Opening 他帮忙Refer的,多谢这位大哥
HR效率工作超快,第二天就打电话约电话面试,两周两轮
是我开始找工作的第一个电话面试,然后很幸运
拿到了onsite,不过onsite的时候还是失败了,挺可惜的,还挺喜欢西雅图的,
电面一,
自我介绍,一些通常的问题 why amazon等
编程语言问题,对简历上列的语言全部自我评价,说优缺点
C++技术问题, virtual function的实现, OOP的特点。
Python和C++比较的优缺点
技术问题问了一堆,感觉自己答得很罗嗦,教训是一定要答简洁,节省时间给下面的
常见算法题一道,去掉一个数组中重复奇数次的数
hashtable, first sort and scan
写Hashtable的程序,念给他听, 后来他说Hashtable直接用整数当Key空间太大导致
后来的遍历时间比n大得多, 改进, 当时我没想到map到另一个数组里。
电面二
就一道restuarant reservation sy... 阅读全帖 |
|
j**l 发帖数: 2911 | 29 我的盲点未必是大家的盲点,欢迎加入更多
对反引用成员指针的两个操作符,你可以重载->*但不可以重载.*
构造函数的初始化列表的初始化次序和你的书写次序无关,和类中定义的次序有关
inline关键字对声明不起作用,必须放在函数定义处
异常处理为何常给catch传引用?一是传值慢,二是可以支持多态,如果抛出的异常是
派生类的类型,但捕获用的是基类的类型
STL的成员函数为何放在头文件?林锐说,类模板的成员函数要放在头文件。 |
|
i***e 发帖数: 452 | 30 上周二去的狗狗家onsite, 今天发信问HR update, HR说还在收集feedback, 说明天可
以给个update. 真心求bless! 希望这次可以成了, 谢谢大家!
----------------------
Update: hr今天打电话说明天hiring committee 出结果! 还说透露点feedback: "
some are good, some are not consistent ", 然后说coding is good! 看来有一些
不好的feedback 了! 继续求bless 了!只能看人品爆发了!谢谢
--------------------------------------------------
update2: 写个面经了。。
1) int pow(int n, int m)
2) 写一个类是timer 的东西, 例如给个数值t和函数,等t时间之后call 这个函数。
(然后问有多个这些如果支持多次调用怎么办, 有哪些问题之类的)
3)给一个函数 void f(){.... return;} 然后问在return 语句的时候程序cl... 阅读全帖 |
|
b***y 发帖数: 2799 | 31 ☆─────────────────────────────────────☆
gandjmitbbs (Nothing) 于 (Sun Apr 13 20:19:15 2008) 提到:
最近在看一个新项目的代码,有感。
例如看到一个函数调用,不能马上反应上来哪些传入参数会被修改,尤其code很长很多
,记不住function signature的时候。
用之前的call-by-value,通过指针修改传入参数,函数调用看一眼参数列表,看到&基
本就能知道这个参数要被修改了。
还有带默认参数的函数也是,若有好几个默认参数,挺容易搞混的。
这些功能减少了写程序人的工作量,但是读程序的工作量却增加了。但我觉得现在对程
序员来说读代码也越来越重要。
IDE要有添加信息功能就好了。比如在函数调用里加上哪些参数是call-by-ref,哪些是
启用了参数默认值等。
另外有没有度量程序可读性方面的研究?比如给定源代码,分析一遍之后给出可读性分
析,再给些改进建议什么的。
☆─────────────────────────────────────☆
coconut (向唐僧大师学 |
|
z***l 发帖数: 256 | 32 int在使用ctypes,我遇到了一个问题。在动态链接库liba.so中有个函数f(int input,
int(*callback)(event*)),其中int(*callback)是一个函数,event是一个struct,它的
指针是callback的参数。在f中会对event进行修改,而callback会捕获到这个修改,例如
f(input,int(*callback)(event*)){
event.value=input;
}
我在python中定义一个callback函数,然后试图调用f函数
def callpack(event)
print event.vaule
liba = cdll.LoadLibrary("liba.so")
event1=event()
liba.f(1,callback(event1))
问题出来了,f并不会把event1作为passing by refenece, event1不会被修改。如果改成
liba.f(1,callback(byref(event1))),则会报错。我也尝试用CFUNCTYPE来解决,但好
像没有效 |
|
h****8 发帖数: 599 | 33 A1.test()和A2->test()调用的都是同一个函数virtual test()
不同的是,对这个函数的地址的解析。
对于A1.test(),在编译的时候编译器已经确定了函数地址
对于A2->test(),需要在runtime,通过vptr来找到函数地址。然而vptr已经是空指针,
所以runtime出错
it |
|
l********a 发帖数: 1154 | 34 就是个类自己包含自己的例子
例如,html的tag,
<...>
<...>
<...>
<...>
如果我用这个类A表示一个tag,每个tag下面可能有其他tag,都看做它的孩子,这样可以
对这些tag做相同的处理,如果没有孩子,它的children vector就是空的,现在需要写一
个析构函数来析构,由于vector存放的是指针形式A *,构造函数也能看出来每一个孩子
都是new出来的,调试的报错的确是在
void deallocate(pointer _Ptr, size_type)
{ // deallocate object at _Ptr, ignore size
::operator delete(_Ptr);
}
往上追踪看的确是这个类的析构函数出错了,不能delete?但是现在的析构函数从流程上
好像是对的,比较郁闷 |
|
d*******g 发帖数: 122 | 35 LZ的原话是“因为我估计应该是展开成iterator::operator==(iterator&)”,而我
指出的是他用于iterator的参数是错误的,应该是const_iterator,这些都是对
iterator的成员函数而言,因为LZ的疑问是iterator的成员函数,并不涉及const_
iterator的成员函数,所以不讨论this是iterator*还是const_iterator*,那么与后面
的const也没关系,只与括号里的const有关系。
实际上,我原来是写全了bool和const的,但是为了突出重点,后来就删掉了,因为我
觉得这点大家都会明白。
研究gcc的实现是说:(1)成员函数并非绝对不可以用,书本上的一些原则并非教条。
(2)在LZ所问的gcc的vector中,并没有隐式转换。
从原则上讲,一开始我就说了,STL的iterator的用意是模仿指针,实现时要保证所有
的operator==()都可编译。
const |
|
g**u 发帖数: 583 | 36 今天刚面的Amazon,求祝福
面的题目如下:面的是5个人,第一个是HR, 就聊了些大概的问题,关于Amazon,有关
面试安排, 面试的语言和他们的工作流程之类,略无不表。后面面了4个engineer,把
记住的题目说一下。
每轮面试45 minutes, Interviewer will come to the office.
有个的题目是:如何找到bst中第二大的数;可以用in order visit,然后返回倒数第二
个,但是时间和空间都是O(n);要求improve,一个方案是寻找最大值(right most
nodes),然后寻找bst中最后一个小于该node的节点(log n),要求code实现第二个方法
;然后是要在hash table中实现一个function可以按照插入的顺序打印出来;接着是实
现linux下面的count words,用了2个whileloop分别处理当前指针在word中和word间的
空格,要求2种情况一起处理,写了一半没写完(缺少练习啊)
有一个题目是关于C++和Java中的内存分配的;然后问了关于3-tier(UI, middle-tier
... 阅读全帖 |
|
b***i 发帖数: 3043 | 37 1
type* arr=new type[size];
cout <
结果取决于type的大小 (sizeof(arr[0])),和系统的指针的大小 type*的大小。
比如64位系统,int* arr=new int[10];
sizeof(arr)/sizeof(arr[0])=2,因为指针是8bytes,int是4bytes
再比如32位系统, double* arr=new double[10];
sizeof(arr)/sizeof(arr[0])=0.5也就是显示0(取整)
2
不光stack上,static变量也可以算sizeof。
3
用引用可以保留size,但是不多此一举吗?
void foo(int (&array)[10]) {
std::cout << sizeof(array) << "\n";
}
4
int* arr = new int[10];之后,arr是一个指针。
而int arr[10]是数组,static int arr[10]也是数组,这两个在编译的时候就知道大
小,... 阅读全帖 |
|
s***e 发帖数: 403 | 38 面的一个用C++的公司,算法居然考的很简单……
首轮电面:
1. C++的继承中内存分配是如何的,给出一个可能方案。
2. 虚指针和虚表在虚函数中起到什么作用。
3. 如果在继承中用基类的指针指向派生类,如何判断this指针的类型?如何计算相应
的偏移?
第二轮:
http://en.wikipedia.org/wiki/Happy_number
判断某个数是不是happy number。
写的时候犯了一个错,把一个!=写成==了,被面试的人指出,囧一个。结果还没出来,
等待ing。 |
|
b******g 发帖数: 3616 | 39 惭愧惭愧。一两个月前也属于你说的那种new grads....虽然其实都还没grad...
特别是int *&r = p 这种表述一看就晕了。。。。刷LC和面试时都被指针引用做参数的
函数虐过。回头复习了下教科书,才知道这种表述要从右向左读,先是一个引用,然后
是一个对指针的引用,最后是一个对整数指针的引用-_-! |
|
z***y 发帖数: 73 | 40 不得不说楼主其实挺有创造力的,ls有几个哥们没仔细看代码吧。
形参给的是指针,而不是指针的指针,楼主为了处理删除首节点,苦心写了第一段代码
,把次节点数据拷贝到首节点,然后删除次节点。蛮有想法:)
估计是函数原型给错了,哈哈哈哈。 |
|
发帖数: 1 | 41 内存泄漏以前还真是个大问题,现在c++内存泄漏好多了是因为C++03, 11以后智能指针
的支持越来越好,C++98和以前大部分时候智能指针和右值支持不好,大家写裸指针new
delete经常忘记delete.当然现在c++对于movable type的支持还不算完美,比如你用
bind写回调函数,还是会发现movable的type没法传入bind. Java 按照原理还说基本不
会有内存泄漏的问题,所谓的泄漏都是代码写屎了开个了大资源然后一直有long live的
object去hold.
另外回复后面兄弟的帖子 - 不要觉得语言无所谓,程序员的生产效率很大程度上取决于
对于语言特性的了解, 这是一个日积月累的过程,不要轻易放弃你已经熟悉的语言,不要
Google, Facebook面试不限制语言就真觉得语言无所谓了, 程序员的目标是delivery,
而不是面试..
个人对于Java, cpp没有偏见,都用过用得都不错, 不过现在cpp写多了, java就写少了. |
|
z****e 发帖数: 2024 | 42 那个run就是线程启动的函数。
thread 对象,必须要一个heap上面的指针,
就是这句话。
exe.execute(new events(p, &oprand::cal2) );
我也不知道,这个stack上边的exe,怎么操作heap上的指针的。
因为多数情况,当main()退出的时候,其他线程还没完事。
我就奇怪,这个stack上的exe thread对象,main结束的时候,不是已经玩完了么?怎
么还能顺利的销毁它持有的heap指针呢? |
|
d******i 发帖数: 7160 | 43 鄙夷老技术者跳过哈。
越发想不明白。
调用路线开始是: CoCreateInstace --> CoGetClassObject --> DllGetClassObject
尚可理解,无非是 CoGetClassObject通过查找注册表,得知DLL路径,然后调用DLL中
DllGetClassObject。
用CLSID替代了直接loadLibrary那个DLL(那样的话需知道名字和路径),
进而靠DLL中的这个输出函数DllGetClassObject试图得到COM组件的指针,即简化版本
中CreateInstance起到的作用。
问题是这个DllGetClassObject没直接new出来个COM组件返回了事,而是整出个本组件
独有的类厂给返回了。
该指针一直返回到CoCreateInstace,才被用来CreateInstance()。
我是狗搜了半天,读遍数篇讲解,也没搞清这个reasoning(靠类厂去CreateInstance)
到底在哪儿。
按说既然这个类厂也是写组件的人写的,引入类厂就有点多此一举了。
DllGetClassObject直接做了CreateInsta... 阅读全帖 |
|
v******y 发帖数: 84 | 44 函数的argument要一个常量T的reference,因为T指向常量的指针,所以
speciliazation是=
指向常量的指针的常量的reference,那么这个就好const char *const &
明白。很多时候第一次的理解是要一个指向常量指针,这个指向一个常量 const const
char *&
来。 |
|
d****n 发帖数: 1637 | 45 http://zhuanlan.zhihu.com/thought/20010926
达达 · 6 天前
今天我要教大家一些无用技能,也可以叫它奇技淫巧或者黑魔法。用得好可以提升性能
,用得不好就会招来恶魔,嘿嘿。
黑魔法导论
为了让大家在学习了基础黑魔法之后能有所悟,在必要的时候能创造出本文传授之外的
属于自己的魔法,这里需要先给大家打好基础。
学习Go语言黑魔法之前,需要先看清Go世界的本质,你才能获得像Neo一样的能力。
在Go语言中,Slice本质是什么呢?是一个reflect.SliceHeader结构体和这个结构体中
Data字段所指向的内存。String本质是什么呢?是一个reflect.StringHeader结构体和
这个结构体所指向的内存。
在Go语言中,指针的本质是什么呢?是unsafe.Pointer和uintptr。
当你清楚了它们的本质之后,你就可以随意的玩弄它们,嘿嘿嘿。
第一式 - 获得Slice和String的内存数据
让我小试身手,你有一个CGO接口要调用,需要你把一个字符串数据或者字节数组数据
从Go这边传递到C那边,比如像这个:mysql/con... 阅读全帖 |
|
b***i 发帖数: 3043 | 46 问题在于swig负责衔接,如果返回指针,那么swig默认C++传出的指针不应由swig来销
毁,就像vector删掉元素并不销毁内存一样,所以Python的变量如果出范围是
不会调用swig来销毁这个空间的。
返回对象则默认Python应该负责销毁,所以swig会帮助进行销毁。指针也可以达到类似
的效果,要使用%newobject cppapi::ReturnObj();
那么swig就认为C++把所有权交给了python,
a=cppapi.return_obj()就获得了所有权(swig设的域thisown)
当变量a出范围后,Python就可以告诉swig,swig再调用析构函数。 |
|
k*******d 发帖数: 1340 | 47 用vector基本是可以代替array的,因为它也是连续存储的,用的时候小心些基本不会
影响效率,而且它也兼容那些需要指针作为parameter的函数,和老代码可以兼容
不用pointer基本不可能,不用pointer的话怎么实现polymorphism, 虽然reference也
可以,但是限制多,实现多态还是用指针方便,当然,为了安全起见,可以用smart
pointer。
C程序员习惯用pointer,面试题因为都是小规模程序,用指针常常可以更快更简练地解
决问题,所以面试用pointer多,从design角度来看,还是少用raw pointer为好 |
|
p********7 发帖数: 549 | 48 第二题是 30 1,是不是因为传入函数的参数顺序是从右到左
第三题 是对的,不知道A *p = 0;其实是给p一个NULL指针,还是没实例化,但是他可以调用
函数,因为这些函数不占用内存。
第八题和第二题类似,应该是个随机数,因为初始化列表的顺序是从右向左,所以你调用
getnumber先,赋值在后
第九题也不对,是随机数,10,40,随机数。只有全局变量才初始化为0 |
|
A*********r 发帖数: 564 | 49 来自主题: JobHunting版 - C++问题 函数参数不能变的话,有点难,毕竟C++ 的函数必须是已经定义好type的,即
使是有void指针,也是需要cast才能用的。。
除非写几个不同参数的同一个函数,这样可以达到相同的效果。。 |
|
c*******t 发帖数: 1095 | 50 1. 基类指针 p, 子类 r,用 p 调用r里面函数
只用两行
一问到就傻了,从来用的是C,昨晚花了几个小时看essentialC++刚好才看到OOP,其实
答案想到了的,就是没敢说,或者说不知道怎么表达
回答应该是:p指向r,p->函数名.就完了
2. 倒着输出一个整型
代码很简单,规定不能用string的啥函数直接弄,我也没用过,没听懂
写代码后念,问我test要注意哪些事项?我想了半天,说随机产生数字进去测试就是了
(遭狠批),给我提示了一个:输入在int范围内而输出超了
3. brain:两根绳子每根烧60minute,如何测45minute
4. 还有时间,考了个打印二叉树所有元素
感觉都很简单,第一个电面,顺便问问过来人,后面是不是应该要难很多?
因为才开始修行OOP,今天面的时候直接就问我OOP的如何,我说用的不多但是还是知道
点(大实话),结果第一题就败了,以后我是不是直接应该说没用过?
engineering,非CS,
bless |
|