C++新手有关问题~

C++新手问题~~第一个:int a2 b7int cca^b2coutc为什么结果是30?第二个问题:如果在派生类中创

C++新手问题~~
第一个:
int a=2; b=7;
int c;
c=a^b<<2;
cout<<c;
为什么结果是30?



第二个问题:
如果在派生类中创建了一个基类子对象,那么这个子对象在初始化的时候为什么只调用基类的构造函数而不调用派生类的构造函数,它不是在派生类里声明的么?下面那个代码里,Derived(int y):Base(y),base(y)又是什么意思,Base(y)会调用基类构造函数么?为什么答案只给了两次调用constructing  Base class?
求大神讲解!感激不尽!
举例:
#include<iostream>
using namespace std;
class Base{
public:
    Base(int n)
    {
        i=n;
        cout<<"constructing  Base class"<<endl;
    }
    ~Base()
    {
        cout<<"destructing   Base class"<<endl;
    }
     dispB()
    {
        cout<<"i="<<i<<endl;
    }
private:
    int i;
};
class Derived:public Base{
public:
    Derived(int y):Base(y),base(y)   //派生类的构造函数。调用基类构造函数和子对象构造函数
    {
        cout<<"constructing Derived class"<<endl;
    }
    ~Derived()
    {
        cout<<"destructing Derived class"<<endl;
    }
private:
    Base base;  //定义子对象base
};
int main()
{
    Derived der(521);
    der.dispB();
    return 0;
}
[解决办法]
c=a^b<<2;
^与<<的运算符优先级哪个更高?

第二问:
这是我的运行结果:

$ ./main
constructing  Base class
constructing  Base class
constructing Derived class
destructing Derived class
destructing   Base class
destructing   Base class

Derived(int y):Base(y),base(y),构造函数,先调用基类的构造函数,在调用子类的构造函数,子类的构造函数先调用base(y),再调用 Derived()函数