const修饰成员函数成员函数后加const后我们称这个函数为常函数函数:常函数内不可以修改成员
#include <iostream> using namespace std; class Cube { public: void SetL(int l) { m_L = l; } int GetL() const //只有用const修饰方法,compareCube才能用const做形参 { ...
转载 2021-08-19 16:30:00
129阅读
《Effective C++》里面说,尽量使用constconst修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样,主要看const位于*左边还是右边,这里不再赘述,主要来看一下当const修饰成员函数时,成员函数有什么特点。类成员函数后面加 const,表明这个函数不会对这个类对象数据成员(准确地说是非静态数据成员)作任何改变。在设计类时候
原创 2015-10-03 21:17:56
630阅读
一般所有的成员函数都只有一个复本,当不同对象调用成员函数时,为了区分是哪个成员在调用,会传入this指针。当调用有const、volatile修饰成员函数时,会相应传入一个const、volatile修饰this指针。故const、volatile不能修饰没有this指针成员函数。如:co...
转载 2015-09-05 18:44:00
96阅读
2评论
const能够用来修饰变量,那么const是否能用来修饰对象?答案是肯定,那么对于const修饰对象,在调用函数时有怎样规则呢?
原创 精选 2017-12-20 17:09:44
1949阅读
3点赞
函数成员函数后加const后我们称这个函数为常函数; 常函数不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const 常对象只能调用常函数函数: #include<iostream> using namespace std; cl
转载 2019-12-25 13:12:00
125阅读
2评论
demo <pre name="code" class="cpp">class Test { public: const void OpVar(int a, int b) { a = 100; } protected: private: }; Test类中有一个成员函数OpVar。有一个const
原创 2021-08-06 13:58:34
74阅读
类B可以有多个对象b1,b2,b3等。 类B中 static int x; int y; 那么x是类B所有对象共享共有的,y是对象各自拥有的。 当静态函数中使用y时,编译器不知道是哪个对象y,所以报错。 【this指针】 this指针是指向具体对象。普通成员函数都隐式包含一个指向当前对象th
转载 2020-02-01 16:37:00
185阅读
2评论
#include#include#include#include#includeusing namespace std;class Base{private: int x; char *p;public: Base(void){ x=0; p=(char *)malloc(sizeof(10)); strcpy(p,"123456"); } void Set_x(int tx){ x=tx; } //函数名后面加const表示这个对象指针this所指之物是无法改变 int Get_x()c...
转载 2013-12-05 22:30:00
70阅读
2评论
const成员变量为只读变量,只能通过初始化列表初始化 const成员函数不能直接改写成员变量值,并且只能调用const成员函数 const对象为只读对象,只能调用const成员函数,非const对象也可以调用const成员函数
原创 2021-11-08 09:36:24
435阅读
尽管函数名和参数列表都相同,void foo( ) const成员函数是可以与void foo( )并存,可以形成重载! 我们假设调用语句为obj.foo(),如果obj为non-const对象,则调用foo()。如果obj为const对象,则调用foo()const。另外要注意,假如没有提供foo()const,则const obj调用foo()将会报错。但假如是没有提供foo(),则non-
转载 2013-08-08 00:19:00
182阅读
2评论
任何不会修改类数据成员函数都应该声明为const 类型。如果在编写const 成员函数时,不慎修改了数据成员,或者调用了其它非const 成员函数,编译器将指出错误,这无疑会提高程序健壮性。 另外,const表示这个函数不会修改类中变量,这样才能够被常量对象调用,如果没有这个说明,则被认为是修改。常量对象将无法调用这个函数。 以下程序中,类stack 成员函数GetCount 仅用于
转载 2009-05-05 15:09:03
362阅读
对类内部数据成员函数成员都可以用static修饰。 如果成员被static修饰,那该成员就是静态,从应用角度讲,类使用者通过类来访问静态成员在语义上更能够被理解,而通过实例来访问静态成员在语义上显得不合适。 在类内部,所有成员都可以访问静态成员。但反过来,静态成员绝对不可以访问实例成员静态成员值对于所有实例对象而言,是共享,所以任何实例都可以访问或修改静态成员,且更改
原创 2007-02-05 12:40:00
331阅读
关键一点在于:静态成员函数只和类型有关,而与对象无关! 这样就可以看出静态成员函数和非静态成员函数根本区别就在于:静态成员函数没有this指针,因为它没有对象,而非静态成员函数有一个指向当前对象指针this。 举例: class A { public:     void notStaticFunc(int a);     static void staticFunc(int a); }  
#include<iostream>#include<string.h>#include<stdio.h>#include<stdlib.h>usingnamespacestd;/*A1const修饰一个类中成员变量,则此变量必要用初始化列表来进行初始化。A2const修饰一个类中成员函数,则表示此成员函数不会修改类中所有成员变量。A3const修饰
原创 2019-05-15 09:01:46
761阅读
成员函数后面加 const,表明这个函数不会对这个类对象数据成员(准确地说是非静态数据成员)作任何改变。 在设计类时候,一个原则就是对于不改变数据成员成员函数都要在后面加 const,而对于改变数据成员成员函数不能const。所以 const 关键字对成员函数行为作了更加明确限定:有 const 修饰成员函数(指 const 放在函数参数表后面,而不是在函数前面或者参
原创 2013-03-04 09:10:00
592阅读
首先声明,我是一个菜鸟。一下文章中出现技术误导情况盖不负责1. 类const成员函数与非const成员函数载重#include <iostream>#include
转载 2013-05-08 19:12:00
142阅读
#include <iostream>using namespace std;class Person {public: Person(int a, int b) { this->a = a; this->b = b; } void showInfo() const { // 常函数 //this->a++; 报错: 因为没有被mutable
原创 2023-03-02 01:06:47
11阅读
const 成员函数: 类成员函数后面加 const,表明这个函数不会对这个类对象数据成员(准确地说是非静态数据成员)作不论什么改变。 在设计类时候。一个原则就是对于不改变数据成员成员函数都要在后面加 const,而对于改变数据成员成员函数不能const。所以 const keywor
转载 2018-03-13 09:25:00
125阅读
2评论
  • 1
  • 2
  • 3
  • 4
  • 5