Redian新闻
>
C++拷贝构造函数是干啥的?
avatar
C++拷贝构造函数是干啥的?# Programming - 葵花宝典
R*9
1
楼主女, 当年拿奖学金出来读书工作刚好十年了。 前两个月面了某记。 最后一面的
时候大大老板说, 我们想给你另一个在上海的位置。我说可以考虑。 拜五hr给了
package 税后rmb 800k+1200shares/year. 没有其他的租房补贴什么的。 要求三个工
作日给答复。 要还是不要?
avatar
q*g
2
有人观望。。
有人干的热火朝天。。
有人说曾经见过500到50的,算是最厉害的(price error的不在此列)。大多好的deal
持续时间特别短。持续长的,这个算一个,还有就是当年的crazy rebate。
曾经crazy rebate的时候,大体大家的反应也跟着此touchpad差不多。真正干的人,都
赚到了,那个时候的deal是:几十个rebate填的手都麻了,还临时买了个打印复印一体
机,最后赚多少,呵呵,反正有200多rebate没拿回来,我都懒的去argue了。有兴趣的
可以查查crazy rebate的帖子。
历史潮流呀。临渊羡鱼是添加不了乐趣的,也赚不到钱的。
avatar
b*i
3
我们公司的项目中定义了和业务相关的类,比如Well, Workspace, 各类Model等。这些
类在系统中形成树形结构,所以每个成员都有Parent,为此,每个类都是一个基类的子
类,这个基类有Parent,是基类的指针。
现在出现了争论,就是拷贝构造函数是干嘛的。我认为,拷贝要拷贝所有的东西,是C+
+语法需要的。而架构师认为,拷贝是给用户复制一个树用的。
具体:
我认为,拷贝是为了C++编译器用的,当我们把一个语句编译的时候,编译器有的时候
需要调用我们的拷贝构造,有的时候需要调用移动赋值等。比如
auto temp = std::make_unique<...>(*it->get());这里就是调用拷贝构造
而各类的std::vector>里面如果删减则调用shared_ptr的move
assignment,或者copy assignment。这是应C++语法的要求。
架构师认为,用户复制一个树的时候,比如复制一个Well, 被复制的不能拥有同一个
Parent,不能指向同一个目录等。但为认为应该定义另一个函数用来复制,比如叫
Clone,来完成他的不完全复制。
大家怎么说?
avatar
b*k
4
你赚了多少?

deal

【在 q********g 的大作中提到】
: 有人观望。。
: 有人干的热火朝天。。
: 有人说曾经见过500到50的,算是最厉害的(price error的不在此列)。大多好的deal
: 持续时间特别短。持续长的,这个算一个,还有就是当年的crazy rebate。
: 曾经crazy rebate的时候,大体大家的反应也跟着此touchpad差不多。真正干的人,都
: 赚到了,那个时候的deal是:几十个rebate填的手都麻了,还临时买了个打印复印一体
: 机,最后赚多少,呵呵,反正有200多rebate没拿回来,我都懒的去argue了。有兴趣的
: 可以查查crazy rebate的帖子。
: 历史潮流呀。临渊羡鱼是添加不了乐趣的,也赚不到钱的。

avatar
h*l
5
一般情况下copy constructor is copy by value.
对指针成员变量的处理是由你们的业务逻辑决定的,和C++语法无关。
avatar
c*l
6
给扫扫盲,关于crazy rebate??

deal

【在 q********g 的大作中提到】
: 有人观望。。
: 有人干的热火朝天。。
: 有人说曾经见过500到50的,算是最厉害的(price error的不在此列)。大多好的deal
: 持续时间特别短。持续长的,这个算一个,还有就是当年的crazy rebate。
: 曾经crazy rebate的时候,大体大家的反应也跟着此touchpad差不多。真正干的人,都
: 赚到了,那个时候的deal是:几十个rebate填的手都麻了,还临时买了个打印复印一体
: 机,最后赚多少,呵呵,反正有200多rebate没拿回来,我都懒的去argue了。有兴趣的
: 可以查查crazy rebate的帖子。
: 历史潮流呀。临渊羡鱼是添加不了乐趣的,也赚不到钱的。

avatar
b*i
7
一个例子
vector all;
all.reserve(2);
all.push_back(1);// id = 1
all.push_back(2);// id = 2
all.erase(all.begin());//此时调用拷贝构造函数或者移动构造,但是我们的两个函
数不复制id,所以
all.begin()->showId();//显示0.因为我们的拷贝构造是给业务逻辑用的,不是给其他
库用的。但是这样这个vector存的东西都变了。

【在 h**l 的大作中提到】
: 一般情况下copy constructor is copy by value.
: 对指针成员变量的处理是由你们的业务逻辑决定的,和C++语法无关。

avatar
z*t
8
经历多了发现其实都是浮云
avatar
r*z
9
如果你们的类处于特定的原因,不愿意提供拷贝构造函数而希望要求用户使用clone这
样的方式,那么应该把拷贝构造函数deleted。这样,你上面的代码就根本不能编译了
。事实上,如果不提供拷贝构造函数的理由是充分的的话,这种限制(比如很多标准容
器相关的用法会不允许)也将是合理的。这不是语言问题。
avatar
p*a
10

HP sent crowds of geeks to queue in front of retailers this weekend after it
abandoned the TouchPad, a tablet computer, and retailers were forced to
sell them for $99 -- a $300 discount and well below cost.
On Saturday, I made calls to about a dozen metro Detroit retailers in search
of a TouchPad. All of them had sold out early that morning.
Then, word came overnight that stores, namely Best Buy, would have some
inventory this morning.
Who can turn down a $99 tablet? Not me.
I started at a Best Buy location in Utica, arriving about 30 minutes before
the store was set to open at 11 a.m.
Others clearly had the same idea. I was No. 37 in the line.
After a short wait, a Best Buy employee came out to tell us that the store
had no TouchPads in stock.
"But we do have a bunch of netbooks you could take a look at," he said.
The crowd quickly dispersed.
The next-closest Best Buy was in Rochester Hills. There, just eight people
were waiting. I made myself No. 9, hoping this store would have some in
stock.
They did.
So now I have an HP TouchPad.
What am I going to do with it?
I'm not sure yet.
It's a capable e-mail, Web and calendar machine, but lacks an ecosystem of
powerful apps to compete with the Apple iPad.
I'm still exploring the device, but check back Tuesday for my take after a
couple days with it.
Here's hoping I didn't just buy an expensive clock.

【在 z***t 的大作中提到】
: 经历多了发现其实都是浮云
avatar
h*l
11
你们自己的程序是在什么情况下调用拷贝构造函数的? 为什么你们的拷贝构造函数和
移动构造函数不复制id?指针成员变量的处理比较复杂一些,id应该是primitive type
, 为什么要特殊处理?
可能像楼上说的,你们这个类的对象就不适合被拷贝,直接disable掉,你们用你们自
己的函数来拷贝就好了。

【在 b***i 的大作中提到】
: 一个例子
: vector all;
: all.reserve(2);
: all.push_back(1);// id = 1
: all.push_back(2);// id = 2
: all.erase(all.begin());//此时调用拷贝构造函数或者移动构造,但是我们的两个函
: 数不复制id,所以
: all.begin()->showId();//显示0.因为我们的拷贝构造是给业务逻辑用的,不是给其他
: 库用的。但是这样这个vector存的东西都变了。

avatar
q*g
12
一套几十个rebate。至于几套就要看你几个可靠的地址。反正我到sam's拿了500个一盒
信封,三卷邮票。
有一个哥们搞了一套,最后后悔了,原价转让给隔壁。后来老是过来蹭网。
有deal的时候,不要悔,不要前怕狼后怕虎。用不完就出,美国出不了,就国内出,国
内的都如狼似虎,是非常可靠的保障。
另外deal都是劳动所得(这里包括胆量,呵呵)。不过不要被神医忽悠出不去了,你吓
的立刻跳水,神医照单全收吃个肚圆。

【在 b*******k 的大作中提到】
: 你赚了多少?
:
: deal

avatar
b*i
13
我同意你的观点,好不容易劝说了几个人接受这个观点。

【在 r*****z 的大作中提到】
: 如果你们的类处于特定的原因,不愿意提供拷贝构造函数而希望要求用户使用clone这
: 样的方式,那么应该把拷贝构造函数deleted。这样,你上面的代码就根本不能编译了
: 。事实上,如果不提供拷贝构造函数的理由是充分的的话,这种限制(比如很多标准容
: 器相关的用法会不允许)也将是合理的。这不是语言问题。

avatar
b*k
14
没概念,这一共赚了多少钱啊?1000块?

【在 q********g 的大作中提到】
: 一套几十个rebate。至于几套就要看你几个可靠的地址。反正我到sam's拿了500个一盒
: 信封,三卷邮票。
: 有一个哥们搞了一套,最后后悔了,原价转让给隔壁。后来老是过来蹭网。
: 有deal的时候,不要悔,不要前怕狼后怕虎。用不完就出,美国出不了,就国内出,国
: 内的都如狼似虎,是非常可靠的保障。
: 另外deal都是劳动所得(这里包括胆量,呵呵)。不过不要被神医忽悠出不去了,你吓
: 的立刻跳水,神医照单全收吃个肚圆。

avatar
b*i
15
在需要半复制,半构造的时候,就是把一个树的结构复制,每个节点半复制(名字可以
一样,但是id不一样,父节点指针也不一样),所以不能复制id和父节点指针。

type

【在 h**l 的大作中提到】
: 你们自己的程序是在什么情况下调用拷贝构造函数的? 为什么你们的拷贝构造函数和
: 移动构造函数不复制id?指针成员变量的处理比较复杂一些,id应该是primitive type
: , 为什么要特殊处理?
: 可能像楼上说的,你们这个类的对象就不适合被拷贝,直接disable掉,你们用你们自
: 己的函数来拷贝就好了。

avatar
p*m
16
5年靠这些赚过1000刀
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。