快来看看,C++显式的拷贝构造函数

来源:百度知道 编辑:UC知道 时间:2024/06/16 04:50:27
问题1:帮我写个显式的拷贝构造函数的例子,要求把私有成员的数值也都拷贝过去。
问题2:是不是隐式的拷贝构造函数是模认把所有的对象都拷贝过去内?
问题3。隐式的拷贝构造函数,如果是静态的成员变量是如何处理的?
1楼 比如:
class c{
public
c(): data1("初始值"){}
c(const c&) {...这里该怎么写,知道了吧}
private:
string data1;

}

1.
class c
{
public:
c(): data1("初始值"){}
c(const c&o) {data1 = o.data1;}
private:
string data1;
};
2. 正确,不过要注意如果类的成员变量是指针,该指针指向的内容不被复制,只复制指针值,因此会导致多个指针指向同一份数据。
3. 静态成员不属于对象,它属于类本身,并且在类被使用前必须在类外部进行初始化。例如:
class c
{
public:
c(): data1("初始值"){}
c(const c&o) {data1 = o.data1;}
private:
string data1;
static int counter;
};
int c::counter = 0;

1.
#include<string>
using namespace std;

class c
{
public:
c(): data1("初始值")
{
}
c(const c&c1) :data1(c1.data1)
{
}
private:
string data1;

};

2.按位拷贝,如果就指针就会有问题了
3.一样拷贝

1.问题1太抽象了,根本不知道成员是什么,怎么给你复制?
2.完全正确!而且要注意,如果是自己写复制构造函数,其中没有数据复制的操作则不会起到复制构造的作用.是把所有的成员变量拷贝过去...
3.静态成员变量是全局量,与你写的类有多少个对象没有关系,所以不用考虑

我不同意楼上关于3的说法。静态成员变量拷贝个啥?