回 帖 发 新 帖 刷新版面

主题:[原创]C/C++问题探讨--大家来帮帮忙

1. #include<iostream.h>
void main()
{
    int a=3,b=2,c=1;
    c-=++b;
    b*=a+c;
    {
        int b=5,c=12;
        c/=b*2;
        a-=c;
        cout<<a<<','<<b<<','<<c<<',';
        a+=--c;
        cout<<a<<','<<b<<','<<c<<',';
    }
    cout<<a<<','<<b<<','<<c<<endl;
}
我想问的就是为什么最后的那句cout<<a<<','<<b<<','<<c<<endl;的输出结果会是
2,3,-2?????
2. #include"stdafx.h"
#include<iostream>
using namespace std;
class A
{
  public:
        A(){cout<<"无参数构造函数!"<<endl;}
        A(int i,int j){cout<<"带参数构造函数!"<<endl;}
        A(A& r){cout<<"调用拷贝初始化构造函数!"<<endl;}
        A& operator=(const A& r){cout<<"调用赋值操作符!"<<endl;return *this;}
};
void main()
{
   A a1[2];
   A a2[3]={A(1,2),A(2,3),A(3,5)};
   A *p=new A[2];
   delete p;
   a1[1]=A(9,10);
}
我想问的是:A& operator=(const A& r){cout<<"调用赋值操作符!"<<endl;return *this;}这句话在这里的作用是什么???
谁能帮帮我,告诉我下。。
[em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16][em16]

回复列表 (共1个回复)

沙发

A& operator=(const A& r){cout<<"调用赋值操作符!"<<endl;return *this;}

这句话是运算符转换(关键字是operator)。原来的‘=’符合是不能在对象(特别是有成员的类的对象)之间使用的,经过运算符转换后才能用于对象间的赋值操作。 就像你程序中的 a1[1]=A(9,10);

我来回复

您尚未登录,请登录后再回复。点此登录或注册