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
成员函数后面加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);/
const修饰类的成员函数 const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当const修饰类的成员函数时,成员函数有什么特点.https://www.cnblogs.com/cthon/p/9166715.html 类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变. 在设计类的时候,一个原则就是对于不改变数据成员的成员
当形参是const时,必须要注意关于顶层const的讨论.如前所述,顶层const的作用于对象本身: const int ci=42; //不能改变ci,const是顶层的 int i=ci: //正确:当拷贝ci时,忽略了它的顶层const int *const p=&i; //const是顶层的,不能给p赋值 *p=0; //正确:通过p改变对象的内容是允许的,现在i变成了0 和其他初始化过程一样,当用实参初始化形参时会忽略掉顶层const.换句话说,形参的顶层const被忽略
在C++ primer 5th中,第6章的练习6.39(a)中,关于重载和const形参的学习心得. 练习6.39:说明在下面的每组声明中第二条声明语句是何含义.如果有非法的声明,请指出来. (a) int calc(int, int); int calc(const int, const int); 这题第一眼看下来,肯定是错的啊.这一节课前面刚讲了,一个拥有顶层const的形参无法和另一个没有顶层const的形参区分开来.妥妥的错了. 然后我看了GitHub上的答案,合法??发现答案说的