
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;
} 展开
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;
} 展开
4个回答
展开全部
引用类型的成员变量必须在构造函数的初始化列表中进行初始化,因此正确的写法是:
#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;
}
#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修饰的类成员;
三,需要初始化引用成员数据;
展开全部
引用需在成员初始化列表赋值:
A(int a, int b) : total(b) { num = a; }
A(int a, int b) : total(b) { num = a; }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为没有定义赋值操作符
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
数据成员有引用变量构造函数要这么写
A(int a,int b):total(b)
{num=a;
}
A(int a,int b):total(b)
{num=a;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询