关于《effective C++》第三版书中P24-25页有一点疑问
受这本书的启发,我写了个小程序,打算照葫芦画瓢,但是程序为什么不能通过运行啊?
#include <iostream>using namespace std;class A{public: A(int x1=0){x=x1;} int& operator()( int a) { this->x=a; return const_cast< int&>(static_cast<const A&>(*this));//这里我照抄了书中代码形式 } friend ostream&operator<<(ostream&out,const A&a) { out<<a.x<<endl; return out; }private: int x;};int main(int argc, char *argv[]){ const A a;//这里不要更改 a(10);//这里打算让非常成员函数调用常对象。 cout<<a; cin.get(); cin.get(); return 0;}// TestCpp.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>using namespace std;class A{public: A(int x1=0){x=x1;} int& operator()(int a) const { A &ref = const_cast<A&>(*this); ref.x=a; return reinterpret_cast<int&>(ref); } friend ostream&operator<<(ostream&out,const A&a) { out<<a.x<<endl; return out; }private: int x;};int main(int argc, char *argv[]){ const A a; a(10); cout<<a; cin.get(); cin.get(); return 0;}