精华内容
下载资源
问答
  • 刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵。 常数据成员常数据成员是指在类中定义的不能修改其值...
  • 定义常数据成员: 类型 const 对象名;或者 const 类型 对象名; 例如:const clock c1(9,9,9)或者: clock const c2(10,10,10); 常对象的几条特殊规则: 1、常对象,不能被赋值。 2、常对象,不能访问非常...

    定义常数据成员:
    类型 const 对象名;或者 const 类型 对象名;
    例如:const clock c1(9,9,9)或者:
    clock const c2(10,10,10);

    常对象的几条特殊规则:
    1、常对象,不能被赋值。
    2、常对象,不能访问非常成员函数。
    3、常对象,不能被更新。
    4、常数据成员,只能通过初始化列表来获得初值。

    什么时候用常对象?
    1、函数返回值,2、函数形参(常引用)

    常成员函数
    1、常成员函数,不能修改(更新)对象数据成员的值。
    2、常成员函数,不能调用该类中没有用const修饰的成员函数。
    3、常对象,只能调用它的常成员函数,而不能调用其他成员函数。
    3、const关键字可以用于参与重载函数的区分。

    如何定义常成员函数?
    返回类型 成员函数名(参数表) const;

    综合例题:

    class date{
       privateint y,m,d;
       public:
           int year() const;
           int day() const;{return d;}
           int  month() const;
           int day(){return d++;}
           int addyear(int i)
           {return y+i;}
           };
    
    int date::month(){return m;}
    //错误,常成员函数实现不能缺少const
    int date::year()const{return y++}
    //错误:常成员函数不能更新类的数据成员
    date const d1;
    int j=d1.year;
    //正确,常对象可以调用常成员函数
    int j=d1.addyear(10);
    //错误,常对象不能调用非常成员函数
    date d2;
    int i=d2.year();
    //正确,非常对象可以调用常成员函数。
    d2.year()
    //正确,非常对象可以调用非常成员函数。
    展开全文
  • 常数据成员 引言:类存在的目的之一就是为了实现封装性,但是实际上经常使用公有函数接口去修改其数据成员,为了保证类中可以有一些数据成员绝对不会被修改,所以创造了常数据成员 特点: 1.在定义时要在头部加const...

    常数据成员

    引言:类存在的目的之一就是为了实现封装性,但是实际上经常使用公有函数接口去修改其数据成员,为了保证类中可以有一些数据成员绝对不会被修改,所以创造了常数据成员

    特点:
    1.在定义时要在头部加const关键字
    2.初始化操作只能在构造函数的初始化列表中进行
    3.无论是普通成员函数还是常成员函数都无法修改其值

    常成员函数

    引言:为了实现这样一种函数:对于其调用的数据成员只能读取,而不能修改。所以创造了常成员函数

    特点:
    1.在声明和定义时都要在尾部加const关键字
    2.其只能读取数据成员,而不能修改

    是否可以修改 一般成员函数 常成员函数
    一般数据成员
    常数据成员

    3。常对象只能调用常成员函数

    #include<iostream>
    using namespace std;
    class Point
    {int x,y;
    public:
    Point(int a,int b):x(a),y(b){}
    fun(){return x+y}
    fun()const{return x-y}
    }
    
    void main
    {const Point p1(1,1);
    Point p2(1,1);
    cout<<p1.fun<<endl;
    cout<<p2.fun<<endl;
    
    }
    
    

    注:上面的例子一方面说明了常对象只能调用常成员函数
    另一方面说明了const可以用于区分重载函数

    4.常成员函数只能调用常成员函数,防止误改数据成员

    展开全文
  • 常数据成员 常数据成员必须使用初始化列表初始化来初始化,并且不能被更新 常数据成员必须初始化 PS:类的数据成员使用初始化列表进行的初始化 才叫初始化,使用构造函数内部的语句初始化叫赋值 常对象 常对象...

    常数据成员

    1. 常数据成员必须使用初始化列表初始化来初始化,并且不能被更新
    2. 常数据成员必须初始化

    PS:类的数据成员使用初始化列表进行的初始化 才叫初始化,使用构造函数内部的语句初始化叫赋值

     

    常对象

    1. 常对象可以调用常成员函数,不能调用非const成员函数;非const对象,可以调用普通成员函数和常成员函数
    2. 常对象成员函数不一定都是常成员函数,常对象的数据成员不一定都是数据成员
    3. 常对象一旦初始化,常对象的数据成员便不可允许修改
    4. 如果非要修改某个成员变量的话,

    PS:定义常对象有两种方法 1. const Point a  2.Point const a 两者效果一样

     

    常成员函数

    1. 常成员函数不可更新对象的数据成员
    2. 常成员函数的const关键字可以被用于参与对重载函数的区分
    3. 通常非const成员需要定义一个const版本的重载函数,以便定义常对象时可以调用常成员函数(原因是常对象只能调用const成员函数)

    如果常对象调用的常成员函数返回的是指向当前对象的指针(或返回的是当前对象),那么此常成员函数的声明的返回类型要加const,例如:

    const Complex* fun();

    const Complex* fun() const;

    这两个函数可以构成函数的重载

    注意,如果是这样

    const Complex* fun();

    Complex *fun();

    这样就构成不了重载,因为函数的重载以参数个数 参数的类型 参数的顺序为标志,而返回值类型不能作为函数重载的标志

     

     

     

     

     

     

     

    展开全文
  • 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放在函数声明前呢?因为这样做意味着函数的返回值是常量,意义完全不同。
    展开全文
  • #include using namespace std; class A { public: A(int i); void Print();...A::A(int i):a(i) //通过初始化列表初始化常数据成员a {} void A::Print() { cout<<a<<","<<b<<
  • 常数据成员  ◆ 常数据成员必须进行初始化,并且不能被更新。  ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化;普通数据成员在初始化列表和函数体中初始...
  • 当用const修饰数据成员时,该数据成员为常数据成员。当修饰类的函数时,该数据为常成员函数。   1. 常数据成员  const int total; 对常数据的初始化,只能在类的构造函数中通过初始化列表完成;常数据成员一旦...
  • 常数据成员 常数据成员必须使用初始化列表初始化来初始化,并且不能被更新 常数据成员必须初始化 PS:类的数据成员使用初始化列表进行的初始化 才叫初始化,使用构造函数内部的语句初始化叫赋值 常对象 常对象...
  • 类的常成员分为常数据成员和常成员函数。“常”代表“只读”,也就是说一旦确立,一般情况下不会被改变。 常数据成员 常数据成员是只读变量,只能读取,不能修改。对于每个对象,常数据成员都是不可变的,但不同对象...
  • 常数据成员 常数据成员是指在类中定义的不能修改其值的一些数据成员,类似于我们以前学过的常变量,虽然是变量,也有自己的地址,但是一经赋初值,便不能再被修改。 适用于类中定义一些初始化之后不希望被修改的变量...
  • 常数据成员 ,常函数

    2019-05-26 19:35:27
    常数据成员通过初始化列表初始化,不可被修改 #define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class Circle { public: Circle(double con_radius); double circumference(); ...
  • 3、静态常成员变量(基本数据类型) 4、静态常成员变量(自定义数据类型) 二、常成员变量 C++中使用const关键字修饰的成员变量就是常成员变量,有两种定义方式: const int c; int const c; 需要注意的是:...
  • 类的常数据成员必须进行初始化,而且只能通过构造函数的成员初始化列表的方式来进行。列表中对成员的初始化顺序,与它们在列表中的顺序无关,而与它们在类中的声明顺序有关。包含常数据成员的类不能使用默认构造函数...
  • 常数据成员的用法

    2016-09-28 11:27:59
     #include #include using namespace std; class A{ public:  A(int a);  void print();... //常数据成员  static const int m_iA2;//静态常数据成员。 }; A::A(int a):m_iA1(a){} //常数据
  • //静态常数据成员,可以在类里面初始化。 **//唯一能在类中初始化的成员只有一种,那就是静态常量成员** const int a; //要通过初始化列表赋值 [1]一般数据成员可以在构造函数中初始化(构造初始化列表初始化和...
  • C++常数据成员精讲—const关键字 内容提要: 用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。 变量或对象被 const修饰后其值不...
  • 常数据成员 常数据成员的初始化只能在类构造函数的初始化表中 MINO::MINO(const char *name, int age, string birth, int height, int weight) : m_name(name),m_birthDate(birth) 常成员函数 常成员函数不可以...
  • 1.类的“嵌套”:当类A包含类B的...2.常成员函数和常数据成员:在点类中举例说明。 以点类和线类为例: 点类 Coordinate.h #ifndef COORDINATE_H #define COORDINATE_H class Coordinate{public://构造函数Coordinate
  • 1.对象的数据成员不能被修改了,在定义的时候应该对其进行初始化 2.对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。 3.对象可以调用静态成员函数,成员函数,...
  • 《C++面向对象程序设计(第2版)》P92“const数据成员可以被非const的...常对象只能保证其数据成员是常数据成员,其值不被改变”,这样看来常对象是否等于把对象中的数据成员都定义为const?? 分析: 虽然从理解上

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,351
精华内容 540
关键字:

常数据成员