c++基础知识

希望能帮忙解释一下下面问题,而不是只要个答案,能简单通俗点最好,麻烦了~1。什么是转换运算符函数还有赋值运算符函数?2。6、在C++中,执行cout<<012+021<<... 希望能帮忙解释一下下面问题,而不是只要个答案,能简单通俗点最好,麻烦了~
1。什么是 转换运算符函数 还有 赋值运算符函数?

2。6、 在C++中,执行cout<<012+021<<endl; 所显示的结果是___________________。
//难道输出的默认是十进制?

3。以整形return 10&&-10为什么是-1?

4。为什么析构还有拷贝复制函数不能指定为虚函数?

5。若有for循环语句for(int x=0; x=3; x++){;},此循环语句执行的次数将是____________次。
//按说中间应该填写逻辑语句却写成赋值语句,那vc怎么读这段代码的呢?

6。在字符串中使用以下字符(字符组合)时,不需要采用转义字符的是【 】。
A.\\ B.'
C.\ D."
//为什么?

7。++的优先级比[]低,那么对于数组a[i++]应该是和a[i]等价的吧?
那么i++>i呢? 为什么不对? ++优先级不是高于大于小于号的吗?

8。bool fn()
{
char *a="abcde";
char *b="bcdef";
return strcmp(a,b);
}

void main()
{
int i(0),j(0);
cout<<fn()<<endl;
}

为什么后来我把strcmp(a,b)改成strcmp(b,a)之后,和之前一样输出结果是1??

8.构造对象数组的时候同时会执行构造函数吗?
补充:真的很悲伤,我只有这么多分,我还怕不给分没人搭理...所以就给了,哎...
展开
 我来答
wrgljylys
推荐于2016-06-03 · TA获得超过389个赞
知道小有建树答主
回答量:89
采纳率:0%
帮助的人:170万
展开全部
1、

转换运算符函数就是强制类型转换也可以当作操作符重载
例如
class B
{
public:
B(int data) : m_data(data) {}
operator int() const
{ return m_data; }
int m_data;
};

当有 B b(100); 时,将b强制转换为int类型时如
int c = (int) b; 或者 int c = static_cast<int> (b);
此时将调用 operator int() cons t函数,返回的就是 b.m_data 的值
而从外部就看就像是把b强制转换成int类型一样

赋值运算符函数就是当在非定义时出现的由一个 = 运算符连接两个对象时候调用的函数
例如
B b1(100);
B b2(200);
b1 = b2; // 此处将调用operator = 这个操作符函数。
// 如果类B中没有显式给出operator = 函数,编译器会提供一个默认的operator =函数,该默认函数将把b2的所有内容拷贝到b1中
// 你也可以通过重载的方式自己定制operator = 函数,
// 例如 const B& operator (const B& b) { m_data = b.m_data; }
要注意定义时出现的 = 不调用 operator =,
例如
B b3 = b2; // 这里不调用operator =,而是调用类的拷贝构造函数。

2、cout在给数据的时候虽然可以识别十进制、八进制,但是输出的时候默认都是十进制,除非你人为去设定

3、这个普通的C++环境应该是返回1的,不知道你用的是什么。你也可以通过 cout<<true<<endl; 这句话测试一下你的true值是多少(应该是1)

4、不知道你为什么有析构函数不能指定为虚函数这个概念,从现在起,你需要更正过来。
析构函数是可以指定为虚函数的!而且将析构函数指定为虚函数是一个好的思想。
除非确实不必要(如没有继承层次的类),都应该将类的析构函数指定为虚函数。

至于构造函数,则是没有必要指定为虚函数,试想实例化一个对象的时候必定是要知道其类型的,执行的也只可能是这个类型的构造函数,不会有虚函数的问题,所以也就不允许将构造函数指定为虚函数。

5、该语句将无限地执行下去,直到你强制退出
for的中间语句是一个表达式,表达式值非零则继续循环
表达式值为零则结束循环
x=3也是一个表达式,该表达式的值就是3,所以会无限循环下去 (你也可以通过 int y; cout << (y=9) << endl; 这两条语句测试一下)

6、单引号在字符串中不用转意,单引号在语法中是用来表示一个字符的,而在一个字符串中一定不可能会用单引号来标识字符,因为这是字符串!
所以在字符串中,单引号不用转义。当然你使用转义后的单引号也完全可以。即在字符串中, ' 和 \' 的效果一样。

7、表达式 i++>i 的值一定是false。因为后置的++都是先使用原来的值,然后才自加。遇到类似这样的问题你可以这么理解:
后置自加,自加是在++出现的语句的分号(逗号)之后。例如i++>i这个,你可以不管三七二十一,先把++拿掉 得到 i > i (false)
最后在这个包含 i++>i 的一句话执行完以后(逗号或分号以后), 再来对 i = i + 1;

8、strcmp函数返回的是一个int值。当两字符串相等时返回0,不等时返回非0
"abcde" 和 "bcdef" 是一对不等的字符串,无论比较的时候是a在前还是b在前,strcmp函数都将返回非0值。
这个非0值又将以一个bool类型返回,非0既是true,true的值是1。所以无论是strcmp(a,b)还是strcmp(b,a),输出结果都是1。
长上天妖1D
高粉答主

2019-11-15 · 醉心答题,欢迎关注
知道答主
回答量:15.3万
采纳率:5%
帮助的人:9140万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
stomachcao
2010-06-11 · TA获得超过6263个赞
知道大有可为答主
回答量:2276
采纳率:75%
帮助的人:860万
展开全部
路过 ,你不给分估计有人道义上帮你解答
给个五分 不知道有没人帮你做
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式