j**l 发帖数: 2911 | 1 我的盲点未必是大家的盲点,欢迎加入更多
对反引用成员指针的两个操作符,你可以重载->*但不可以重载.*
构造函数的初始化列表的初始化次序和你的书写次序无关,和类中定义的次序有关
inline关键字对声明不起作用,必须放在函数定义处
异常处理为何常给catch传引用?一是传值慢,二是可以支持多态,如果抛出的异常是
派生类的类型,但捕获用的是基类的类型
STL的成员函数为何放在头文件?林锐说,类模板的成员函数要放在头文件。 |
|
l********a 发帖数: 1154 | 2 就是个类自己包含自己的例子
例如,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?但是现在的析构函数从流程上
好像是对的,比较郁闷 |
|
L****o 发帖数: 166 | 3 假设U是光滑的二元非负函数满足
1) U(x,y)=U(y,x);
2) a(|x-y|)<=U(x,y)<=b(|x-y|),a和b是连续一元非负函数,满足a(0)=b(0)=0。
另f是局部李普西茲二元函數。
U和f满足
3)U_x(x,y)*f(x,z)+U_y(x,y)*f(y,w)<=U(x,y) 对任意满足|x-y|>=|z-w|的x,y,z,w成
立。
U_x 和 U_y 分别是U对第一元和第二元的偏导。
求证或者构造反例:存在连续函数一元非负函数c,满足c(0)=0,使得
U_x(x,y)*f(x,z)+U_y(x,y)*f(y,w)<=U(x,y)+c(|z-w|)
对任意x,y,z,w成立。 |
|
v*******e 发帖数: 11604 | 4 我也对量子力学很有兴趣,我推荐读狄拉克写的课本,google books上可以直接看。我
一边开高速一边看完了第一章,感觉很有收获。但是也就只看完了第一章。
至于你们说的波函数,它的特征值、特征解,建立了连续的波函数和离散的量子之间关
系。任给一个系统,里面是线性的、离散的关系,你是不是一定能构造出波函数,使得
它的特征解是这些离散关系的基?我线性代数学得不好,学控制论的时候期末考试基本
上挂了。
补充一句,我认为意识和量子没关系。用电脑也能实现有意识的AI。 |
|
m*********y 发帖数: 127 | 5 纯借id发文……
我以前选的是d,主要是从能否成功build的角度看的……
c
recompiling
各库都已经编译过,即使增加新的constructor,导致如重载的变化、默认构造函数无
效,但是应该都会保留原有的行为,不会导致链接失败。
同意前面的,这个导致memory layout变化,确实会影响行为,带来很多不安全的因素
。但是应该也不会导致链接失败。
同意前面的,如果以前没有虚函数,现在会增加vtable,同样改变了memory layout…
…但是其他情况下,应该行为都没有变化,并且链接不会失败。
C++/C里面函数默认值应该是静态绑定的,增加默认参数仍然改变了函数的signature,
如果库里有调用的话,应该会导致链接失败 |
|
m******l 发帖数: 613 | 6 我在用java写一格东东,有个算法不会写,只找到了别人用c写的代码
但转换的时候发现如下问题,想烦请各位高手指点一二
int* beam,*scp,*tmx;都是当数组用(我在java中定义了int beamidx, scpidx, tmxidx
)
1.beam += y + icm[y].offset;(icm是我自己定义的一个istate数组,offset是一个整型
元素)
2. *scp=*beam+*tmx;
3.trace类的构造,我构造tracestack开始的时候用如下代码
trace[] list=new trace[10];
然后再在tracestack的构造函数中写道:
for(int i=0; i<10; i++) list[i]=new trace();
但这样每次都会报错java.lang.stackoverflow,后来只好把这一句屏蔽掉
4。int[][][] amx
beam=amx[diff][0]+y+icm[y].offset; 这句话什么意思,怎么转换
trace定义如下
class trace {
public int emitl=0; |
|
d*e 发帖数: 843 | 7 谢谢啊
我也想构造g=ln(t)的情形,搞不出来
b可以没有显式表达,分段构造也可以
如果有negative的proof,也行,有思路不? |
|
s********n 发帖数: 53 | 8 1面, 2个人, 1人1小时。电话, 用collaedit 写代码。
经验还是不够啊 , 莫名其妙就好紧张。
-----------------------------------------------------
1. 烙印,口音不是很重,听口气还是比较nice。是个SDE
Given a file includes words.
Design online system, user can find all anagrams in the file of a given word.
尼玛现在想想路子有点不太对。
:先设计一个function 把功能实现了吧,
:好的。
:我打算先处理一下那个file, 存到一个hashmap里。key 是排序后的string,value
是个arraylist, 存了file里面所有的anagram。 用户搜索的时候就直接返回结果。
: 好的。
(写代码,瞎扯淡)
:复杂度怎么样啊。没有那么多memory 存到内存里怎么办 ? (尼玛,忘记是设计系
统的事情了, 就写了个功能)。
:在系统初始化的时候就把file 处理好。 给函数搞成静态的。(尼... 阅读全帖 |
|
e****d 发帖数: 333 | 9 DflFile::DflFile( ){
//一个构造函数,ppfield 是私有成员
double** ppfield=0;
//准备一个二维数组,并开辟记忆体
ppfield=new double* [NCAR];
for(int i=0;i
ppfield[i]=new double[2*NCAR];
}
void DflFile::ReadDflFile( ){
//一个成员函数用来读取二进制数据
ifstream in_dfl("FileName",ios::in|ios::binary);
//以下代码显示: core dump segment fault
//编译通过,但是运行不了
for(int i=0;i
in_dfl.read((char*) ppfield[i],2*8*NCAR);
}
但是奇怪的是,如果在成员函数里给ppfield开辟记忆体,就不会出错。
也就是把
ppfield=new double* [NCAR];
for(int i=0;i
ppf |
|
f*****Q 发帖数: 1912 | 10 首先最好能在标题或者帖子开头说明是C++,首先声明俺很久不用C++了,不一定说的对
,抛砖引玉。
1,看不懂。
2,函数可以是private,protected或者public。变量也可以是private, protected或
者public。实例变量好像不能在这里定义吧?
3,不能访问同类对象的private part。friend可以访问其他类对象的private part。
子类可以访问父类(不确定是不是这么叫)的protected部分,但是private不行。
4,构造函数没有返回值。没返回值不写void俺不太确定,俺记着没返回值的函数的缺
省返回值是int,不是void。
5,你说的初始化式大概是
classA::ClassA():variableA(0),variableB(4+someOutsideVariable){
...
}
中
variableA(0),variableB(4+someOutsideVariable)这一部分。
俺记着C++里面类实例变量是不可以在声明的时候直接赋值的。
6,其他的实例变量里面的constant可以在类初始化的时候赋值。
7,看不 |
|
J*****n 发帖数: 4859 | 11 欧欧匹代码的格局,是和别的编程模式不同的:首先要有一个构造函数;基类里只定义
了函数的形式,可以随时通过派生增加不同的实现。那些程序员们,每每学会了继承和
多态,便可以接一个项目,——这是十年前的事,现在至少要懂得设计模式,——靠柜
台外站着,写些代码换一个鸡蛋灌饼吃;倘若懂一些多线程的知识,便可以在鸡蛋灌饼
里加火腿肠,或者里脊了,如果懂得语言的实现原理,那就能做一些底层代码的优化,
换一盘炒菜。但这些程序员,多是初级水平,大抵没有这样深入。只有懂得内存模型的
,才能接一些底层的项目,打开调试器和剖析器,慢慢的坐着优化代码。
我从十二岁起,便在村口的githoverflow工厂里当学徒,师傅说,我逻辑思维太差,怕
学不会静态类型语言,就写些shell脚本吧。shell脚本虽然容易写,但语法容易含混不
清的地方也不少。字符串和数组的功能很弱,条件判断的语法也很奇特,有时要对特殊
字符手动做两重转义,然后通过。在这种情况下,写脚本也很为难。所以过了几天,师
傅又说我干不了这事。幸亏荐头的情面大,辞退不得,便改为专管测试的一种无聊职务
了。
我从此便整天的站在测试机前,专管运行测试脚本。虽... 阅读全帖 |
|
w***g 发帖数: 5958 | 12 在语言层面可以做到纯函数。各种树都能做别说哈希表了。比如哈希表插入函数,输入
为哈希表和需要插入的对象,输出为一个*新的*哈希表。因为建了一个新的表,所以不
存在inplace
更新这个操作。但是从实现上,新表和老表通过reference共享了绝大部分内容,所以
空间代价还是O(1). 有点像docker用的那个洋葱文件系统。所有更新操作都通过包洋葱
实现。
一路摊过去。gc在背后收拾没用了的东西。
纯fp和imperative有点像数学上的对偶关系,本质是同一个东西,但表面上套路完全不
一样,没法直接翻译。比如插元素,它非要说是建新表,但背地里其实还是插元素。比
如算数列的一个元素,它非给你构造出一个无穷数列,到最后其实还是只算了一个元素
。说白了就是迂。
:Out of sight, out of mind? 而且我的问题是如何实现哈希表这种常用结构。
: |
|
g****t 发帖数: 31659 | 13 输出为(previous表的地址,diff)
这样旧表仍然是immutable的。这样可以吗?
Fp和imperative确实很多时候其实就是时域信号以及频域类似的关系。但是也有非常多
corner cases.
例如矩阵求逆写FP我觉得难度极大。fortran的库有
太多利用inplace改变矩阵元素的挖内存技巧了。
(我本科毕业设计本想沿着大三的课题
做AI,结果老板给
了本fortran数值计算书让改写成c plus plus。弄得我丢了半条命)
: 在语言层面可以做到纯函数。各种树都能做别说哈希表了。比如哈希表插
入函数
,输入
: 为哈希表和需要插入的对象,输出为一个*新的*哈希表。因为建了一个新
的表,
所以不
: 存在inplace
: 更新这个操作。但是从实现上,新表和老表通过reference共享了绝大部
分内容
,所以
: 空间代价还是O(1). 有点像docker用的那个洋葱文件系统。所有更新操作
都通过
包洋葱
: 实现。
: 一路摊过去。gc在背后收拾没用了的东西。
: 纯fp和imperati... 阅读全帖 |
|
|
m********s 发帖数: 8 | 15 f 是一个函数, 定义域非负实数, 满足
1) f(0)=0,
2) 单调递增趋无穷
3) 满足f'(s)<=f(s), s>=0
首先,我感觉这样的函数 f 并不存在。
g 的构造无从谈起。 |
|
d*****r 发帖数: 2 | 16 Auto_Ptr是STL中对Smart Porinter的一种实现. Smart Pointer的关键是如何处理对象的拷贝(包括拷贝构造和赋值). Reference Counting只是其中的一种方法. 其他方法还包括:
copy prevention (将拷贝构造函数和赋值算子定义为private)
create new copy
owership transfer
reference linking
copy on write
...
各种拷贝技术适用予不同作用的场合. 有兴趣可参考boost中定义的scoped_ptr, scoped_arry, shared_ptr, shared_array, weak_ptr and intrusive_ptr. |
|
c*****z 发帖数: 182 | 17 不太明白什么意思,能否再仔细讲解一下
我知道insert里用的是displacement new, 而erase里只是指针操作,没有创建新的节点
我的问题是,他们返回iterator的时候,一个隐式调用构造函数,一个显式,这个和
node指针本身构造方式有关吗? |
|
X****r 发帖数: 3557 | 18 先忽略你重载的operator new,把基本概念搞清楚。
从语法上来讲,void*不能自动转换成Foo*,这个是乌龟的屁股,所以你编译通不过,
从语义上来讲,rbv只是返回一片内存,new不仅分配内存还调用构造函数,这个赋值就
不对。
如果你想在指定的内存位置构造一个对象,用placement new:
Foo *y = new (rbv()) Foo;
如果你想强行把这片空间作为一个Foo对象来看待,用cast:
Foo *y = (Foo *) rbv();
但是后者这样的话你使用y的时候什么都可能发生。 |
|
z****e 发帖数: 2024 | 19 构造一个5×5的概率空间,等概率产生25个事件,前面21个可以构造被7整除的等概率
事件数。
超过21就不算重来。 |
|
l********a 发帖数: 1154 | 20
就是如果构造函数传入第一个参数是当前构造对象的父指针
A::A(A* a,int)
{
this->parent = a;
...
} |
|
z******r 发帖数: 1245 | 21 不用引用传参数要调用拷贝构造函数,如果没有拷贝构造,就调用默认了,所以就是0
了。
我觉得是这样 |
|
s***g 发帖数: 245 | 22 我有1800节点,也就是3600个节点。当我把这3600个节点构成一个图形graph的时候,
分成以下几步:
1)构造adjacency list
2) addvertex
3) addedge
前两步速度还可以,几秒钟就好了,可是第三步却用了4分钟,addedge真的那么慢吗?
函数如下:
public void AddEdge(int start, int eend)
{
adjMatrix[start, eend] = 1;
adjMatrix[eend, start] = 1;
} |
|
b***i 发帖数: 3043 | 23 Java是不是
class Node{
private int value;
Node(int a){value=a;}
Node(){}
public void setValue(int a){value = a;}
}
Node[] all=new Node[size];
for(int i=0;i
all[i]=new Node(i);
C++是不是不能这么做?是不是得如下,即必须使用默认的构造函数,无法像Java那样
可以先不构造
Node* all=new Node[size];
for(int i=0;i
all[i]->setValue(i);
以上是微软的,因为没有实现可变大小的数组,这好像和C99有关? |
|
x******g 发帖数: 318 | 24 我先说几种
1.利用初等函数,这里面又分好多种.你都能证明吗?
2.利用代数方程的根
3.利用极限过程,这里面应该大有学问,无论是构造还是证明. |
|
|
n*******l 发帖数: 2911 | 26 对我来说,标准构造就是
tanh x = (e^x - e^{-x}) / (e^x + e^{-x}),
也就是你中间的那个。 |
|
a****n 发帖数: 1887 | 27 memory leak我也不清楚怎么回答, 一般用软件调, bound checker, rational purify
, 还可以用crt 的函数调, 其他就不清楚了, 谁给个正确答案?
上电后的过程这里边应该是有。如果大家对嵌入式感兴趣, U-Boot应该是要了解一些的
的形式有区别,我个人感觉这本书是讲得比较清楚而且是比较简单的,尤其是
condition value,应聘 Linux application software development的职位应该是逃不
出这本书的
较清楚。这些问题我前面的电话面试上都被问到过,形式各不同。昨天的面试有个题其
实是关于 如何实现share_ptr 中的 reference count的,以拷贝构造函数的方式问得
,但是我中招了。
问到
看一次都有新的收获 |
|
y**i 发帖数: 1112 | 28 1. 什么是pure virtual class?我还觉得很奇怪,问是不是问abstract class和pure
virtual function。面试官说有区别,不过还是让我按照自己想的说了,所以我想知道
,有pure
virtual class么?
2. 为什么抽象类不能创建对象?
3. 在派生类的构造函数里调用基类的虚函数好不好?(最好能说说为什么)
多谢!!
另外,如果面试官问给自己的C++打分,从1到5分,一般打多少比较好?(如果公司需
要极强的C++能
力) |
|
b*******7 发帖数: 136 | 29 经过了online和phone intervew,今天上午去的onsite。问的问题都很基本,以前的面
经都有,
不知道为什么这样。。难道真的像以前看过一个帖子说bloomberg真的是只面试很少招
人吗。面试过程
先是两个两个印度工程师问技术,然后hr,然后manager。最后manager结束的时候说We
will see
what happens,听起来不怎么positive。
因为很简单所以感觉表现还不错,只是有两个比较不常见的问题,分享一下。1.如果在
stack上声明了
一个变量,有什么方法可以删除这个变量释放内存,我答的是用一个for或者while循环
,或者另声明一
个函数,但好像不是他想要的答案。2.manager问的一个是声明一个gloable的class,
然后这个构造
函数会在什么时候被调用。。很奇怪的问题,然后他又换了个问法说是在main前还是
main后。。我就说
是前面吧,但还是不太明白。 |
|
b********e 发帖数: 215 | 30 1. what is the diff between struct and class? my answer is member variable
in struct is public by default, but class is private, but the interviewer
usually isn't satisfied about this answer.
Is there any other diffs?
2. map用什么实现的?
3. 在构造函数中,在inialize list里初始化成员变量相比在函数体中初始化有什么好处?
4。什么类型的成员变量必须在inialize list中初始化,我回答reference type have to be inialized, what else? |
|
r**********g 发帖数: 22734 | 31 java的话throw exception就行了。
不过我一直觉得构造函数如果复杂的话是非常evil的,因此我都倾向于用factory。如
果觉得复杂可以不用新建class,搞一个static 函数即可
class C
{
private:
int *m_arr ;
C(size_t size) { m_arr = new int[size];}
public:
static C* Construct(size_t size)
{
if(size == 0)
return NULL;
else
return new C(size);
}
} |
|
A**u 发帖数: 2458 | 32 这公司,面了3轮电话面试,全是C++
晕
1. constructor可以private吗? 怎么创建对象?
2. destructor可以private吗? 怎么销毁对象?
3. 定义 "<<" 输出; 为什么返回是ostream& << ? 为什么不能返回 void?
为什么定义成非成员函数?
4. 创建数组, 调用哪个构造函数?
唉, C++工作真没意思,老纠结这种东西 |
|
r****u 发帖数: 28 | 33 已悲剧,攒人品,上面经。
能想起的题目:
1. 很多C++ 细节问题 如 虚函数, 构造函数, 多态等等
2. 最近收到的100个请求,设计数据结构,不能用stl
3. singleton design pattern
4. linux 细节,如常用command line和debug
5. 一道有意思的题,问“如果你是个senior,当有junior ppl问你他的程序
crash了,跟踪发现在malloc()里,问你怎么回事,怎么解决,你怎么回答”, 这道题
答得不好,是悲剧的原因之一
6. 比较基本的算法题
7。过去的项目
碰到了一个老印,居然在我回答问题的时候打哈欠了,不知道是不是暗示另一个面试官
什么(两人一组)。 总体感觉,题目不难,但是要答得无懈可击也不容易。还有面试
官的期望很重要。
哦,bb是bloomberg,不是bestbuy.:) |
|
r**h 发帖数: 1288 | 34 前两天把offer签了,找工作终于算是告一段落了。在求职过程中得到本版很多帮助,
在这里也想分享一点个人的心得,希望能够对大家有所帮助。
我的背景是Fresh CS PhD,非牛校,无实习经历。研究方向比较冷门,基本上没有对口
的position,属于PhD中比较悲催的一类。前两年写的代码主要是以Matlab和C为主,一
年以前甚至连Java都不熟悉(只是本科的时候学习过),几次投暑期实习都是杳无音讯
。这就是我当时的状态,曾经一度很怀疑自己是否符合工业界的要求。不过反过来,这
种状态也让我能够及时认清现实,调整心态,从0开始一点点复习总结,也算是一件不
坏的事情吧。
关于背景
由于研究方向的机会实在是有限,因此我早早的树立了“要主动迎合工作的要求,而不
是让工作来迎合我”这样的思路。也就是干脆放弃自己的研究方向,多做一些热门方向
的project或者技术,用那些经历来找工作。在过去的一年里我自己自学了Hadoop、
Python和Scala,熟练了Java和C++,操作系统转向了Linux,还学习使用了不少如vi,
gdb,git之类的工具。这样至少简历上会好看很多,skillset... 阅读全帖 |
|
f**********3 发帖数: 295 | 35 1. kmp
2. union find
3. c++ 可以在函数后面加 =delete表示这个构造函数被删除了
最后再次建议,要好好学Java。用Java面试。
otherwise |
|
g********r 发帖数: 89 | 36 我觉得这些细节面试官不会在意的。LZ的问题是没有理解第二题面试官的题意:为了避
免每一次计算dist go through entire list,把O(n)复杂度转移到构造函数里面。
这样的话,就解决了heavy request on computing dist.
包括twosum那题啊,两个函数:store(), twosum(), 取决于哪个调用更频繁,
algorithm也不一样。比如bool twosum()调用频繁,那么就应该存key为sum的map。这
时,store的复杂度就升为O(n)。 |
|
z*******r 发帖数: 12 | 37 用Java吧,C++太难,是个大坑。。。
经常会被问到各种各样关于C++语法和内部实现相关的问题,比如vtable。
Java最多就被问到GC的概念。
从这个角度讲Java更简单。
C++还要释放指针,一不小心就忘了。比如让你实现个链表类,又是复制构造函数,又
是析构函数,老麻烦了。
而且不管是大公司小公司,用Java都是可以的。 |
|
q*********u 发帖数: 280 | 38 我来一个具体的好了,看了一下programming和这里的,发现自己懂和表达清楚完全两
码事起。其中有一个老兄凶神恶煞的,看了都一怔。
#include
using namespace std;
class T
{
public:
T(){a = 11;}
int Get() const{return a;}
private:
int a;
};
class Test
{
public:
Test(int a):m_a(a){}
Test(const Test &t){m_a = t.m_a;} //拷贝构造函数,通过同类型的引用参数访问
私有变量
Test& operator=(const Test &t) //赋值操作函数,通过同类型的引用参数访问私
有变量
{
m_a = t.m_a;
}
//Test(const T &t){m_a = t.a;} //此语句出错,不能访问T类型的私有成员
Test(const T &t){m_a = t.Get();} //这个实现可以
void Print() const
{
cout<<"m_a: |
|
r*******q 发帖数: 50 | 39 这里很多人怀疑我的方法是否有效。不是我不想写出来,
而是实在太简单,实在不值得写出来。我个人认为是个人
都应该想得出。这些人无法想出的原因,我个人认为并不
是水平不够,而是已走火入魔。在MFC和类似环境熏陶下
成长的程序员,习惯了用最复杂的方法完成最简单的认为,
而不能理解世界上还有如此简单的方法。
由于我明天要赶飞机,今天没有时间把我的方法写出来。
虽然简单,要说明白还是要不少的文字。我在此只能重申
一下,我的方法只用构造函数和析构函数,唯一原则是
不用"裸"的new/delete/alloc...
过两天如有时间我会把我的方法写出来。我并不企望能改变
那些已经走火入魔的人,只希望尚未走火入魔的人少一些误
入歧途。在这几天也许有人已经找到解决方案,如你能代我
写出来最好了,因为我很快又要回中国,行程很紧。
在此不由得联想到版名,"欲练此功,引刀自宫",对那些
走火入魔的人,可能确实如此//hehe |
|
k****f 发帖数: 3794 | 40 因为构造函数没法返回值的,所以只能用throw/catch
其他函数都可以返回错误信息的。
called |
|
C******e 发帖数: 6 | 41 今天遇到一个神奇的错误
有一个别人写好的类,我试图在里面加两个short int类型的public成员变量
结果是这样的,如果我把这两个成员变量加在public:和构造函数中间,就会产生
segmentation fault;如果放在所有成员变量和成员函数的最后,就没有错误
有人知道这是为什么吗? |
|
x****t 发帖数: 389 | 42 来自主题: Programming版 - C++弱问 问题是。。。。
请问我怎样在构造函数中初始以及和析构函数中delete这个xyz?
多谢!!!! |
|
w****h 发帖数: 212 | 43 就是说,比如构造函数
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 | 44 函数执行的顺序是b a c,但是输出的是 a c b。编译器生成的b()的代码应该对应的是
b()
{
a(); //自动加入
c(); //自动加入
cout << "b" << endl;
}
所以调用b()时反而先输出了a c。
如果认为自动加入那部分不是构造函数的一部分,那么得出的执行顺序应该是a c b,
但是我觉得这么理解不妥。 |
|
t****t 发帖数: 6806 | 45
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你错了. OP说的是对的. 可以access同类对象的private.
构造函数没有返回值, 也不能写返回void.
其它不返回值的函数必须声明void. 如果不写返回类型, 编译是通不过的, 这点和C不
一样. 没有缺省返回什么类型这一说. |
|
z****n 发帖数: 1379 | 46 只有析构函数是这样吧?
构造函数还是两个都调用的吧
is |
|
w*********r 发帖数: 18 | 47 其实这是个QT的问题,我希望B的对象发射一个信号,然后它包含的A的对象接受这个信
号,但是在A的构造函数里需要用如下函数绑定信号
connect(sender, SIGNAL(foo()),this, SLOT(dosomething()));
这个sender必需是B的实例,可是B的constructor里又先调用A的constructor,我怎么
填这个sender? |
|
m********r 发帖数: 334 | 48 在一个类中声明如下
class Myclass : public Object
{
public:
otherClass *A;
...
}
otherClass:otherClass(String name)
{
setName("This is " + name);
}
Myclass:Myclass
{
A = new otherClass(Str1);
}
以上没有问题,但是在Myclass的一个成员函数里如果调用
A->setName("Now it is " + "some string" );
gcc报错说 invalid operands of types const char [xx] and unsigned char [xx]
to binary operator+
为什么在构造函数里可以,这里就不行? |
|
|
l********a 发帖数: 1154 | 50 来自主题: 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 ... 阅读全帖 |
|