首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

为什么是一个拷贝而不是一个引用?该如何解决

2012-02-26 
为什么是一个拷贝而不是一个引用?一个程序中这样的一段代码:Person::Person(conststring&n,conststring&a)

为什么是一个拷贝而不是一个引用?
一个程序中这样的一段代码:

Person::Person(const   string&   n,   const   string&     a)   :   name(n)
{
      address   =   a;
}
-------------------
书上说name(n)使用是n的一个拷贝,我感觉应该是n的一个引用才对啊。
难道书上写错了?请高手指教,谢谢



[解决办法]
name是什么类型,如果是int double类似的就是拷贝
[解决办法]
我也是第一次看到这种,函数后面还可以这样赋值???
[解决办法]
class Person
{
string name;
string address;

可以看出 name 是 Person 类内部包含的一个完整 string 对象——既然是对象,怎么会变成“引用”?
[解决办法]
[const] string Person::n; //拷贝
const string& Person::n; //引用
取决于你n的定义
[解决办法]
拷贝。
[解决办法]
初始化列表,是拷贝
[解决办法]
Person::Person(const string& n, const string& a) : name(n)//这里是初始化列表,相当于直接在name内存中赋值n
{
address = a;//这里是运算符操作,是地址传递,指向同一个内存地址
}
[解决办法]
取决于你name的定义

class Person
{
//string name;
string &name; //这样就会是引用了
string address;

Person(const Person&);
Person(const string&n, const string &a );
};
[解决办法]
想想
strign name = n;=> 拷贝
string &name = n;=> 引用
[解决办法]
对象的构造过程:基类的构造函数、数据成员初始化、构造函数
其中数据成员的初始化就是调用拷贝构造函数,如:
C a;
C b = a; //此处即调用拷贝构造函数

热点排行