精华内容
下载资源
问答
  • 常对象成员函数不一定都是常成员函数,常对象数据成员不一定都是数据成员 常对象一旦初始化,常对象数据成员便不可允许修改 如果非要修改某个成员变量的话, PS:定义常对象有两种方法 1. .

    常数据成员

    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();

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

     

     

     

     

     

     

     

    展开全文
  • 常对象成员函数不一定都是常成员函数,常对象数据成员不一定都是数据成员 常对象一旦初始化,常对象数据成员便不可允许修改 如果非要修改某个成员变量的话,声明为mutable PS:定义常对.

    常数据成员

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

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

     

    常对象

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

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

     

    常成员函数

    1. 常成员函数不可更新对象的数据成员
    2. 常成员函数的const关键字可以被用于参与对重载函数的区分
    3. 通常非const成员需要定义一个const版本的重载函数,以便定义常对象时可以调用常成员函数(原因是常对象只能调用const成员函数)
    4. 如果常对象调用的常成员函数返回的是指向当前对象的指针(或返回的是当前对象),那么此常成员函数的声明的返回类型要加const,例如:

    const Complex* fun();

    const Complex* fun() const;

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

    注意,如果是这样

    const Complex* fun();

    Complex *fun();

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

    展开全文
  • 常数据成员  ◆ 常数据成员必须进行初始化,并且不能被更新。  ◆ 常数据成员不能在声明时赋初始值(普通数据成员也是),常数据成员必须在构造函数初始化列表进行初始化;普通数据成员在初始化列表和函数体中初始...
    常数据成员

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

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

     ◆ 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;
           [解析]虽然搭配合法,但是似乎不存在这种搭配。

    展开全文
  • 1.常对象数据成员不能被修改了,在定义的时候应该对其进行初始化 2.常对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。 3.常对象可以调用静态成员函数,常成员函数,...

    ①常引用

    形式—— const 类型 &对象名或变量名

    ②常对象

    形式——const 类名 对象名

    1.常对象的数据成员不能被修改了,在定义的时候应该对其进行初始化

    2.常对象不能够调用普通成员函数——因为普通成员函数可能会修改对象的数据类型,这是不安全的。

    3.常对象可以调用静态成员函数,常成员函数,其实也可以调友元函数  (但是这里不对每一个具体展开了,就只是为了更加明白常对象是不能调用普通的成员函数的即可)

    ③常成员函数

    形式——返回值类型 方法名(参数表)

    1.常成员函数不能改变对象的值,也不能在函数体里面调非常成员函数。

    2.常对象可以调常成员函数和静态成员函数

    3.常成员函数实现的时候,函数头是应该和声明的函数头一致的,const也是函数类型的一个组成部分,而对于友元函数和静态成员函数是不用friend和static的

    4.非常对象也可以调用常成员函数,但是当常成员函数与非常成员函数同名的时候(可以视为函数重载),对于非常对象是会优先调用非常成员函数的。

    ④常数据成员

    形式——const 数据类型 变量名;

            (当同时还是静态数据成员的时候)static const 数据类型 变量名;

    1.常数据成员的初始化只能通过构造函数的列表来完成

    
    class CPoint
    {
    public:
    	CPoint(int xx, int yy,int zz);
    private:
    	int x,y;
    	const int z;
    };
    CPoint::CPoint(int xx, int yy, int zz) :z(zz)
    {
    	x = xx;
    	y = yy;
    	//z = zz;     这个是不被允许的,因为会报赋值号左侧必须是可修改的左值(可修改,有数据存储空间)
    }

    2.但是静态的常数据成员必须在类外进行初始化,不能在构造函数中进行,并且const不能省

    class CPoint
    {
    public:
    	CPoint(int xx, int yy,int zz);
    private:
    	int x,y;
    	static const int z;
    };
    const int z = 10;  //const不能省,也是类型的一部分
    3.如果类有多个重载构造函数,就应该在每一个重载构造函数的初始化列表中去初始化常数据成员,当然刚才说的2.除外。


    展开全文
  • http://blog.csdn.net/huangyimo/article/details/52154821
  • 常对象 常成员函数是常对象唯一的对外接口。 常对象成员 常数据成员 只能通过构造函数初始化表对常数据成员进行初始化。 常成员函数 只能引用本类的数据成员,但不能修改。 ...
  • 一:常对象:Time const t1...但如果一定要修改常对象数据成员的值,可以将该数据成员声明为mutable,如: mutable int count;//把count声明为可变的数据成员,这样就可以用生命为const的成员函数改变它的值。 二:
  • 对于每个对象常数据成员都是不可变的,但不同对象的常数据成员可以不同。在对其进行初始化的时候,要用到构造函数的初始化列表,而不能像其他变量一样,直接在构造函数内初始化。初始化列表在构造函数的()和{}之间...
  • 均为保护数据信息,不允许修改某些...且常对象不能调用普通成员函数(只能调用后加const的常函数) 常成员函数 int area() const { } 1、声明和定义都要写const(关键词const在后面)其他和普通函数定义声明无区...
  • 常对象数据成员不能被改变,而且不能访问普通的函数成员,那常对象有何用?这就提出了常函数成员。 类的常函数成员的声明方式:类型说明符 函数名(形参)const;。常函数成员就是为常对象服务的,常对象只能访问...
  • # include <iostream> using namespace std; class Time { public: Time(int h = 10, int m = 30, int s = 59):hour(h), minter(m), sex(s){}; //void out_value();... //常成员函数可以引用非...
  • 常对象、常成员、常指针、常引用 取自mooc魏英老师《C++编程设计》 ...常对象数据成员只能被常成员函数访问,但是不能被修改。 const Data& r 保证了r不会被修改,只是拿来使用。 ...
  • MINO::MINO(const char *name, int age, string birth, int height, int weight) : m_name(name),m_birthDate(birth)
  • 常成员函数可以访问常对象中的数据成员,但仍然不允许修改常对象数据成员的值。有时在编程时有要求,一定要修改常对象成员中的某个数据成员的值(例如类中有一个用于计数的变量count,其值应当不能变化)
  • 首先给出一个例子简单理解const修饰数据变量的基本工作原理: #include &lt;stdio.h&gt; int main() { const int a = 250; int *ptr = (int *)&amp;a; *ptr = 360; printf("*ptr = %d\n&...
  • 常量:对于既需要共享、又需要防止改变的数据。在程序运行期间不可改变。  const 修饰的是对象中的 this 指针。所以不能被修改。... 常对象,只能调用常成员函数,保证常对象数据成员不被改变。 ...
  • 一旦声明可常对象那么常对象中的所有数据成员的值都不能被修改。所以希望保证数据成员的不被改变的对象,我们都可将其声明为常对象。 定义常对象的格式:类名 const 对象名(实参列表){}  或const 类名 对象名(实参...
  • 常对象中的数据成员为常变量且必须要有初始值,如Time const t1(12,34,36); //定义t1为常对象这样的话,在所有的场合中,对象t1中的所有数据成员的值都不能被修改。凡希望保证数据成员不被改变的对象,可以声明为...
  • 作用:常对象中的数据成员值在对象的整个作用域内不能被更改。 注意: 常对象中的数据成员为常量且必须要有初值 常对象的说明形式: 类名 const 对象名[(参数表)]; 或 const 类名 对象名[(参数表)]; 常对象成员 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 870
精华内容 348
关键字:

常对象数据成员