为什么C++中复制构造函数可以调取其他对象中的java 私有构造方法变量

C++中复制构造函数在什么时候被调用?_最火下载站
您的位置: >
> C++中复制构造函数在什么时候被调用?
C++中复制构造函数在什么时候被调用?
C++中复制构造函数在什么时候被调用?这个问题不是疑问了,查了一下国外网站,总结一下。假设Person是一个类,复制构造函数的调用会在以下几种情况下发生:
1、对象在创建时使用其他的对象初始化
Person p(q); //此时复制构造函数被用来创建实例p
Person p = //此时复制构造函数被用来在定义实例p时初始化p
2、对象作为函数的参数进行值传递时
f(p); //此时p作为函数的参数进行值传递,p入栈时会调用复制构造函数创建一个局部对象,与函数内的局部变量具有相同的作用域
需要注意的是,赋值并不会调用复制构造函数,赋值只是赋值运算符(重载)在起作用
p = //此时没有复制构造函数的调用!
简单来记的话就是,如果对象在声明的同时将另一个已存在的对象赋给它,就会调用复制构造函数;如果对象已经存在,然后将另一个已存在的对象赋给它,调用的就是赋值运算符(重载)
默认的复制构造函数和赋值运算符进行的都是&shallow copy&,只是简单地复制字段,因此如果对象中含有动态分配的内存,就需要我们自己重写复制构造函数或者重载赋值运算符来实现&deep copy&,确保数据的完整性和安全性。
上一篇: 下一篇:以下试题来自:
单项选择题下列情况中,不会调用复制构造函数的是A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋予该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时
为您推荐的考试题库
你可能感兴趣的试题
1A.如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类2A.63B.64C.6D.73A.=()[]->B.+-++--C.><>=<=D.+=-=*=/=4A.ifstream file("d:\ncre\test.txt");B.ifstream file("d:\\ncre\\test.txt");C.ifstream file;file.open("d:\\ncre\\test.txt");D.ifstream*pFile=new ifstream("d:\\ncre\\test.txt");5A._radiusB.foo~barC.elseD.3 room
热门相关试卷
最新相关试卷c++中拷贝构造函数”本类型的一个引用变量“这要怎么理解?_百度知道
c++中拷贝构造函数”本类型的一个引用变量“这要怎么理解?
提问者采纳
你的 a1 已经有了值
这个时候 你也想让y=10 怎么办呢
就让 y=x. 悲剧了;}
/貌似 也可以哦
可是实参a1 如何把值给形参 a
答案就是通过拷贝构造函数&#47.;否则你就得 用 A 的其他构造函数来初始化 a2.;就和 这个时候 就会调用拷贝构造函数 来初始化a2.x.,y; 否则 你就得 自己写 y=10.如果拷贝构造函数 设计 成 A ( A a){
x = a.;}为什么要拷贝构造
至于为什么是引用呢 ,
.---- 初始化拷贝构造
用本类的一个已知值的对象的
来 初始化 新的对象比如
A 类有一个成员 int x
你的拷贝构造函数 就应该这样 写 A( A& a){
提问者评价
原来是这样,感谢!
来自:求助得到的回答
其他类似问题
为您推荐:
拷贝构造函数的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c++中对象调用私有变量的问题_百度知道
c++中对象调用私有变量的问题
#include&);&
test++?为什么在成员函数setfunc中对象a通过调用成员函数getfunc间接调用私有变量j就报错;}
ConstructFunc(const ConstructFunc & test){i=endl,test1(2);&&}
void setfunc(const ConstructFunc & a){j=a;& void setfunc(const ConstructFunc & a){j=a;cout&&lt:
ConstructFunc(){cout&pause&&
system(&endl:using namespace std.setfunc(test1),而直接调用其私有变量i 就正确呢iostream&&构造函数&构造函数&&操作符重载
{++i;/}
int getfunc(){int main(){
ConstructFunc test.getfunc()&&&}
ConstructFunc(int x){j=x;class ConstructFunc{}
ConstructFunc operator++()/&lt.i;
/++i.j;复制构造函数&
};&lt.getfunc();&}
ConstructFunc operator++(int free)
{ConstructFunc temp(*this);
return 0;cout&return *this为什么在拷贝构造函数参数中对象test能直接调用其私有变量i
提问者采纳
一个类是自己的友元;}即可这个和变量私有与否没关系,你如果仔细看错误提示的话.getfunc():int getfunc(){}你这里传进来的参数a是const的,它会提示不能调用非const成员函数,这是因为另一个对象也和自己是同一个类型的;}改为int getfunc() const {return j。解决办法很简单,将,这样只能调用a的const成员函数。void setfunc(const ConstructFunc & a){j=a。 至于拷贝构造函数为什么能访问另一个对象的私有变量
提问者评价
O(∩_∩)O谢谢
其他类似问题
为您推荐:
其他1条回答
getfunc()const ConstructFunc & test虽然是参数但也是本类对象;}这玩意里面a是个只读(const),不可以调用非只读成员函数. void setfunc(const ConstructFunc & a){j=a.j;}至于这个只是读取const对象的成员,直接使用本类成员没啥问题啊 void setfunc(const ConstructFunc & a){j=a
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 java私有构造函数 的文章

 

随机推荐