初期化リストでコンマ演算子を利用する次のコードがあります。
#include <iostream>
using namespace std;
class Base
{
protected:
int b;
public:
Base(int a):b(a){}
};
class A:public Base
{
private:
const int i;
const int j;
void inc(int & a, int & b) {a++; b++;}
public:
A(int a, int b):i((inc(a,b),a)),j(b),Base(a+b){}
void print(){cout<<i<<" "<<j<<" "<<b<<endl;}
};
int main()
{
A a(6,7);
a.print();
return 0;
}
私は結果が次のようになることを期待しています:
7, 8, 15
しかし、次のことが判明しました。
7, 8, 13
基本クラスの構築に使用した場合、「a」と「b」はインクリメントされていないようです。理由がわからない...