C++高手请进,小程序哪里错了,引用为啥不能赋值

#include<iostream>usingnamespacestd;classA{public:A(inta,intb){num=a;total=b;}private... #include <iostream>
using namespace std;
class A
{
public:
A(int a,int b)
{num=a;
total=b;
}

private:
int num;
int & total;
};

int main()
{
A a(3,4);
return 0;
}
展开
 我来答
cdz303
2012-11-19 · TA获得超过1225个赞
知道小有建树答主
回答量:466
采纳率:0%
帮助的人:626万
展开全部
引用类型的成员变量必须在构造函数的初始化列表中进行初始化,因此正确的写法是:

#include <iostream>
using namespace std;
class A
{
public:
A(int a,int b):total(b)
{num=a;
}
private:
int num;
int & total;
};
int main()
{
A a(3,4);
return 0;
}
追问
为什么引用不能赋值?是const的呢,谢谢!
追答
引用必须在定义时马上被初始化,因为它必须是某个东西的同义词。你不能先定义一个引用后才
初始化它。
int b;
int & total;

total=b; //赋值
这样是错误的
必须这样写
int b;
int & total=b;//初始化

A(int a,int b):total(b)这样也是初始化

在以下三种情况下需要使用初始化成员列表:
一,需要初始化的数据成员是对象的情况;
二,需要初始化const修饰的类成员;
三,需要初始化引用成员数据;
loboho
2012-11-19 · TA获得超过506个赞
知道小有建树答主
回答量:441
采纳率:100%
帮助的人:444万
展开全部
引用需在成员初始化列表赋值:
A(int a, int b) : total(b) { num = a; }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友c281b4c
2012-11-19 · TA获得超过2293个赞
知道大有可为答主
回答量:2382
采纳率:50%
帮助的人:1174万
展开全部
因为没有定义赋值操作符
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友29034cd
2012-11-19
知道答主
回答量:13
采纳率:0%
帮助的人:4.4万
展开全部
数据成员有引用变量构造函数要这么写
A(int a,int b):total(b)
{num=a;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式