#include
<
iostream
>
using namespace std;
class CCTest {
public:
void setNumber( int );
void printNumber() const;
private:
int number;
} ;
void CCTest::setNumber( int num ) { number = num; }
void CCTest::printNumber() const {
cout << " Before: " << number;
const_cast< CCTest * >( this )->number--;
cout << " After: " << number;
}
int main() {
CCTest X;
X.setNumber( 8 );
X.printNumber();
system("pause");
return 0;
}
// 输出:
//Before: 8
//After :7
using namespace std;
class CCTest {
public:
void setNumber( int );
void printNumber() const;
private:
int number;
} ;
void CCTest::setNumber( int num ) { number = num; }
void CCTest::printNumber() const {
cout << " Before: " << number;
const_cast< CCTest * >( this )->number--;
cout << " After: " << number;
}
int main() {
CCTest X;
X.setNumber( 8 );
X.printNumber();
system("pause");
return 0;
}
// 输出:
//Before: 8
//After :7
const
int
i
=
5
;
//
常量分配了内存(和变量很像),只是你想用i=6这样编译器会耍流氓
int * c = const_cast < int * > ( & i); // 你耍流氓强转
* c = 6 ; // 可以,常量地址里面的内容被改了
cout << i; // 哈哈,编译器说我早就学会优化了,既然说了是常量我就不用取地址里面的内容了,就是5了~
int * c = const_cast < int * > ( & i); // 你耍流氓强转
* c = 6 ; // 可以,常量地址里面的内容被改了
cout << i; // 哈哈,编译器说我早就学会优化了,既然说了是常量我就不用取地址里面的内容了,就是5了~