成员函数后面加const,表示在该函数中不能对类的数据成员进行改变,比如下面的代码: #include <stdio.h> class A { private: mutable int aa; public: A(){} int x() { printf("no const\n"); return aa++; } int x() const { printf("const\n"); return aa++; } }; int main() { A a1;…
Static_cast可以对对象也可以对指针也可以对引用,但是const_cast只可以对指针和引用使用,后者不可以对对象用,如果你要把一个const值转化为非const值只能用隐式执行或通过使用static_cast.C 样式转换或函数样式转换执行. 比如: const int aa = 10; //int bb = const_cast<int>(aa);错误 int bb = int(aa);//传统的c转化方式 int bb = static_cast<int>(aa);/…
工程在window下编译没有任何问题, 但是在linux(CentOS6)下编译就老是报错 C++ 编译器已升级到最新版 6.1.0 错误如下: In file included /bits/stl_algobase.h::, /bits/char_traits.h:, /, , : /usr/local/include/c++//bits/stl_pair.h: In instantiation of ‘struct std::pair<const std::__cxx11::basic_st…
举个例子: 定义了一个类的const实例,怎么让他也能调用非能调用非const成员函数class foo{public:void test1() {cout << "I am not a const member function" << endl;}void test2()const {foo *temp = (foo*)this;//注意这个转换!!!temp->test1();}}; int main() {foo f;f.test2();retur…
class class UIRect:public RECT { public: UIRect(LONG leftT = 0, LONG topT = 0, LONG rightT = 0, LONG bottomT = 0) { left = leftT; top = topT; right = rightT; bottom = bottomT; } int GetWidth() const { return right - left; } int GetHeight() const { re…
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助. 1.const 修饰成员变量 1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int a1=3; ///non-const data 5 const int a2=a1; ///const data 6 7 int * a3 = &…
C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的.如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助. 1.const 修饰成员变量 #include<iostream> using namespace std; int main(){ ; ///non-const data const int a2=a1; ///const data int * a3 = &a1; ///non-const d…