精华内容
下载资源
问答
  • 常数据成员  ◆ 常数据成员必须进行初始化,并且不能被更新。  ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化;普通数据成员在初始化列表和函数体中初始...
    常数据成员

     ◆ 常数据成员必须进行初始化,并且不能被更新。

     ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化;普通数据成员在初始化列表和函数体中初始化均可。

     ◆ PS:类的成员对象若要传入参数初始化,则必须在构造函数初始化列表进行;(成员对象:当一个类的成员是另一个类的对象时,这个对象就叫成员对象。)

    常对象

     ◆ ⭐常对象可以调用常成员函数,不能调用非const成员函数;非const对象,可以调用普通成员函数和常成员函数。

     ◆ 常对象的成员函数不一定都是常成员函数;同样的常对象的数据成员不一定都是常数据成员。

     ◆ 常对象一旦初始化,常对象的数据成员便不允许修改,而不是说常对象的数据成员都是常数据成员。

     ◆ PS:定义常对象有两种方法,1. Point const a; 2. const Point a;(同样的,定义变量或指针时,const放前放后意义一样,如:1. const double a; double const a; 2. const int *p; int const *p; 但是定义指针常量时,只能用 int * const p;)

    常成员函数

     ◆ 常成员函数不更新对象的数据成员。

     ◆ 常成员函数的const关键字可以被用于参与对重载函数的区分。

     ◆ ⭐通常非const成员函数需要定义一个const版本的重载函数,以方便定义常对象后调用常成员函数。
      ◈ 如果常对象调用的常成员函数返回的是指向当前对象的指针(或返回的是当前对象),那么此常成员函数的声明的返回类型要加const,例如:

        ◊ 成员函数返回指向当前对象的指针
          const *Point fun1();    //非const成员函数的类内声明;
          const *Point fun1() const; //习惯上要再声明一个常成员函数作重载函数,注意到此函数声明有两个const;

        ◊ 成员函数返回指向当前对象
          const Point fun1();    //非const成员函数的类内声明;
          const Point fun1() const; //习惯上要再声明一个常成员函数作重载函数,注意到此函数声明有两个const;

        ◊ ⭐注意,如果一个类中声明以下4个重载函数:
          ① Point fun1();
          ② const Point fun1();
          ③ Point fun1() const;
          ④ const Point fun1() const;
         【解析】①和②是冲突的,因为无法区分仅按返回类型区分的重载函数;③和④是冲突的,也是因为无法区分仅按返回类型区分的重载函数。
         所以正确的重载函数搭配有3种:

          ◊ ①和③搭配:
            Point fun1();             //函数返回非const对象
            Point fun1() const;          //函数返回非const对象
           [解析]适用于定义常对象后调用常成员函数,常成员函数返回类型是非const的Point类对象。

          ◊ ①和④搭配(这里把返回类型改为指针,因为常用):
            Point *fun1() {return this; };      //函数返回指向本对象的指针
            const Point *fun1() const { return this; };//函数返回指向本常对象的指针,第一个const说明返回的是指向常对象的指针,第二个const说明此函数是常函数

           [解析]适用于定义常对象后调用常成员函数,常成员函数返回类型是常Point类对象(如return *this;)。

          ◊ ②和④搭配:
            const Point fun1();          //函数返回常对象
            const Point fun1() const;       //函数返回常对象
           [解析]适用于定义常对象后调用常成员函数,常成员函数返回类型是常Point类对象。

           ②和③搭配:
            const Point fun1();
            Point fun1() const;
           [解析]虽然搭配合法,但是似乎不存在这种搭配。

    展开全文
  • C++类的常数据成员和常成员函数

    千次阅读 2019-03-11 11:01:07
    一、常数据成员 1、定义 用const修饰的数据成员 const int hour;//定义const为常数据成员 2、初始化 不能采用在构造函数中对常数据成员进行赋初值的方法,因为常数据成员是不能被赋值的。 构造函数只能用...

    一、常数据成员
    1、定义
    用const修饰的数据成员

    const int  hour;//定义const为常数据成员
    

    2、初始化
    不能采用在构造函数中对常数据成员进行赋初值的方法,因为常数据成员是不能被赋值的。

    构造函数只能用参数初始化列表对常数据成员进行初始化
    
    Time ::Time (int h):hour(h){}//通过参数初始化表对常数据成员进行初始化
    

    3、访问规则

    • 普通成员函数可以引用常数据成员,但是不能修改其值
    • 常成员函数可以引用常数据成员,但是不能修改其值
      二、常成员函数
      1、定义
      常成员函数是指由const修饰符修饰的成员函数
    void getTime() const;//在声明和定义常成员函数时都要有const关键字,在调用时不必加
    

    2、访问规则

    • const对象只能调用const成员函数
    • const成员函数可以引用常数据成员和普通数据成员,但是不能修改其值
    • const成员函数只能调用const成员函数,不能调用普通成员函数
    • 普通对象可以调用const成员函数
      3、本质
      常成员函数的const实际上修饰的是this指针使之成为常this指针
    void getTime(const Time *const this)
    

    普通成员函数编译完是

    void getTime(Time *const this)
    

    4、注意

    • 普通的成员函数和常成员函数互为重载
    • 任何不修改成员数据的函数都应该声明为const函数,这样有助于提高程序的可读性和可靠性
    • const成员函数表示该成员函数只能读类数据成员,而不能修改类成员数据。定义const成员函数时,把const关键字放在函数的参数表和函数体之间。有人可能会问:为什么不将const放在函数声明前呢?因为这样做意味着函数的返回值是常量,意义完全不同。
    展开全文
  • 当用const修饰数据成员时,该数据成员为常数据成员。当修饰类的函数时,该数据为常成员函数。   1. 常数据成员  const int total; 对常数据的初始化,只能在类的构造函数中通过初始化列表完成;常数据成员一旦...

        利用const可以修饰类的成员。当用const修饰数据成员时,该数据成员为常数据成员。当修饰类的函数时,该数据为常成员函数。

         

    1. 常数据成员

        const int total; 对常数据的初始化,只能在类的构造函数中通过初始化列表完成;常数据成员一旦初始化后,其值就不能被改变。

     

    2. 常成员函数

        const关键字定义的函数为常成员函数,定义如下:double function(double a, double b) const;

        作用:禁止在函数体内更新实例的数据成员。所以在函数体内,不能改变数据成员的值,也不能调用该类中能改变数据成员的成员函数,即不能调用该类中其他非常成员函数(没有const修饰的成员函数)。

     

    展开全文
  • 常数据成员的用法

    2016-09-28 11:27:59
     #include #include using namespace std; class A{ public:  A(int a);  void print(); private:  const int m_iA1; //常数据成员 ...//静态常数据成员。...A::A(int a):m_iA1(a){} //常数据
    

    #include <iostream>
    #include <cstdlib>
    using namespace std;

    class A{

    public:
     A(int a);
     void print();
    private:
     const int m_iA1; //常数据成员
     static const int m_iA2;//静态常数据成员。
    };

    A::A(int a):m_iA1(a){} //常数据成员在类的构造函数的初始化列表进行初始化。

    const int A::m_iA2 = 2; //静态常数据成员在类外进行定义和初始化。

    void A::print(){
     cout << m_iA1 << " " << m_iA2 << endl;
    }

    int main(){

     A a(1);

     a.print();

     system("pause");
     return 0;
    }

    展开全文
  • 类的常数据成员必须进行初始化,而且只能通过构造函数的成员初始化列表的方式来进行。列表中对成员的初始化顺序,与它们在列表中的顺序无关,而与它们在类中的声明顺序有关。包含常数据成员的类不能使用默认构造函数...
  • C++常数据成员精讲—const关键字 内容提要: 用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。 变量或对象被 const修饰后其值不...
  • 3、静态成员变量(基本数据类型) 4、静态成员变量(自定义数据类型) 二、成员变量 C++中使用const关键字修饰的成员变量就是成员变量,有两种定义方式: const int c; int const c; 需要注意的是:...
  • 2.对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。 3.对象可以调用静态成员函数,成员函数,其实也可以调友元函数 (但是这里不对每一个具体展开了,就只是为了...
  • C++类中的常数据成员和静态数据成员的区别

    千次阅读 多人点赞 2013-09-20 01:19:26
    刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵。 常数据成员 常数据成员是指在类中定义的不能修改其...
  • 1.引用 用const声明的引用就是引用。引用所引用的对象不能被更改。经常见到的是引用作为函数的形参,这样不会发生对实参的误修改。引用的声明形式为:const 类型说明符 &引用名。引用作为函数形参...
  • C++常数据成员精讲—const关键字更多内容:...用const修饰的声明数据成员称为常数据成员。 变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。 用const修饰的声明数据
  • C++中(const)常数据成员初始化

    千次阅读 2013-11-03 01:42:04
    常数据成员和常引用的初始化只能通过构造函数的成员初始化列表显示进行,而静态常数据成员仍保留静态成员的特征,在类外初始化。 例子:常数据成员初始化 #include /* run this program using the c
  • 首先给出一个例子简单理解const修饰数据变量的基本工作原理: #include &lt;stdio.h&gt; int main() { const int a = 250; int *ptr = (int *)&amp;a; *ptr = 360; printf("*ptr = %d\n&...
  • C++常数据(函数)成员

    千次阅读 2011-03-31 15:22:00
    C++常数据成员精讲—const关键字 内容提要: 用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。 变量或对象被 const修饰后其值不能被...
  • 《C++面向对象程序设计(第2版)》P92“const数据成员可以被非const的...常对象只能保证其数据成员是常数据成员,其值不被改变”,这样看来常对象是否等于把对象中的数据成员都定义为const?? 分析: 虽然从理解上
  • 类的常数据成员(由const修饰)必须在构造函数的初始化列表里被初始化,不能在构造函数的函数体中被赋值; 又因为构造函数可以在类内或类外实现,所以表面上看,常数据成员可在类内初始化,也可在类外初始化。如: ...
  • 在基本数据类型中有常量,类比到类类型中就是对象,其实常量也是对象。 对象的声明方式:const类名 对象名;。对象的数据成员不能被改变,而且不能访问普通的函数成员,那对象有何用?这就提出了函数...
  • 对象中的数据成员为变量且必须要有初值。例如:Person const p('M')。一旦声明可对象那么对象中的所有数据成员的值都不能被修改。所以希望保证数据成员的不被改变的对象,我们都可将其声明为对象。 定义...
  • 常数据成员的初始化

    千次阅读 2012-07-24 16:01:45
    Date::Date(int y,int m,int d):year(y),month(m),day(d) //注意:常数据成员和指针数据成员只能用列表进行初始化。 {} /*void Date::setDate(int y,int m,int d) //试图对常数据成员进行修改 { year=y; ...
  • (很简单,但是很考,记得要回答全面)C++语言中可以用数组处理一组数据类型相同的数据,但不允许动态定义数组的大小,即在使用数组之前必须确定数组的大小。而在实际应用中,用户使用数组之前无法确定数组的大小...
  • 成员和对象

    2016-11-20 10:59:11
    1620-7 唐大智《2016年11月20日...除静态常数据成员外,类的常数据成员只能在类的构造函数中通过初始化列表的赋值外,不能在其他地方改变其值。类的静态常数据成员只能在类外定义性说明时初始化。在对象的生存期内,对
  • 数据结构考知识点

    千次阅读 2017-02-26 21:12:11
    数据结构考知识点工具 可视化工具 树 二叉树基本性质: 结点度为0的个数 = 结点度为2个数 +1 前序遍历:根节点 -> 左节点 -> 右节点 中序遍历:左节点 -> 根节点 -> 右节点 后序遍历:左节点 -> 右节点 -> 根节点...
  • 计算机考研复试面试问问题 数据结构篇(下)

    千次阅读 多人点赞 2020-04-25 19:16:23
    计算机考研复试面试问问题 数据结构篇(下) 使用前需知(拒绝白嫖,如果对你有帮助,你只需点个赞就行): 注意:有人在闲鱼上盗卖我的资料,而且还有很多同学买了,请各位擦亮双眼,我是整理出来免费分享给大家...
  • 计算机考研复试面试问问题 数据结构篇(上)

    千次阅读 多人点赞 2020-04-23 17:21:14
    计算机考研复试面试问问题 数据结构篇(上) 使用前需知(拒绝白嫖,如果对你有帮助,你只需点个赞就行): 需要pdf直接打印版,可在公众号"程序员宝藏"回复复试上岸获取(会持续更新) 在复习过程中,我用心...
  • Emgucv用到的数据结构

    千次阅读 2017-04-29 12:03:46
    Emgucv用到的数据结构 .net点结构类型 1、Point(int x ,int y); 提供有序的 x 坐标和 y 坐标整数对,该坐标对在二维平面中定义一个点 2、PointF(float x, float y);表示在二维平面中定义点的浮点 x 和 y ...
  • 只能调用常成员函数,或者常数据成员。 常成员函数:函数名(参数)const; 相当于函数名(const A*this,参数)。 用法:一般用于无参数函数当中,例如get(),print()函数中。作用是将当前的对象*this修饰...
  • 润乾v5 自定义数据遇到的问题

    千次阅读 2017-04-06 12:04:40
    润乾v5 自定义数据遇到的问题

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,640
精华内容 16,256
关键字:

常数据