精华内容
下载资源
问答
  • 常成员函数

    2018-05-15 08:15:45
    常成员函数能不能返回非常成员函数:常成员函数不能用来更新类的成员变量,也不能调用类中用const修饰的成员函数。只能调用长成员函数,即常成员函数不能更改类中的成员状态,这与const语义相符,即不能返回非常成员...

    常成员函数能不能返回非常成员函数:

    常成员函数不能用来更新类的成员变量,也不能调用类中用const修饰的成员函数。只能调用长成员函数,即常成员函数不能更改类中的成员状态,这与const语义相符,即不能返回非常成员函数;

    常成员函数中静态成员为什么可以改变:

    常成员函数的const是修饰成员函数的this指针,而静态成员没有this指针所以可以修改;


    展开全文
  • 下面小编就为大家带来一篇浅析成员函数和常成员函数的调用。小编觉得挺不错的,现在分享给大家,也给大家做个参考,一起跟随小编过来看看吧
  • 常成员函数具有以下特殊性质 不能更新成员变量的值(静态成员变量除外)不能调用除了常成员函数以外的成员函数可以用来区分函数重载类的常对象只能访问类的常成员函数 class A{ private: int w, h; publi...
    常成员函数,声明方式:类型标识符 函数名(形参列表)const 
    类的成员函数的一种类型,由于const是函数类型,故在函数实现的时候也应带上const关键字。常成员函数具有以下特殊性质 
    • 不能更新成员变量的值(静态成员变量除外)
    • 不能调用除了常成员函数以外的成员函数
    • 可以用来区分函数重载
    • 类的常对象只能访问类的常成员函数

    class A{

    private:  
        int w, h;  
    public:  
        int getValue()const;  
        int getValue();  
        A(int x, int y):w(x), h(y){}  
        A(){}  
        ~A(){}  
    };  
    int A::getValue()const{  
        return w*h;  
    }  
    int A::getValue(){  
        return w+h;  
    }  
    int main()  
    {  
        const A a(1, 2);  
        A c(1,2);  
        cout << a.getValue() << endl;   //调用const成员函数  
        cout << c.getValue() << endl;   //调用非const成员函数  
        return 0;  
    }  


    静态成员函数 ,声明方式:static 类型标识符 函数名(形参列表) 
    静态成员函数只能被定义一次,由类的全体对象共用,属于类的行为,与具体对象无关,而本身也具有如下的特殊性质 

    • 不可以直接访问类中的非静态成员变量和非静态成员函数,只能通过形参传入的对象名来进行访问。
    • 不可以 在函数实现时加static关键词,否则会出错
    • 静态成员函数不含this指针,可以在类外通过“类名::函数名”的方式直接调用。也可以通过对象调用
    1. class B{  
    2. private:  
    3.     int x;  
    4.     int y;  
    5.     static int count;  
    6. public:  
    7.     B():x(0), y(0){  
    8.         count++;  
    9.     }  
    10.     B(int xx, int yy):x(xx), y(yy){  
    11.         count++;  
    12.     }  
    13.     static int getObjCount();  
    14. };  
    15. int B::count = 0;  
    16. int B::getObjCount(){  
    17.     return count;  
    18. }  
    19. int main()  
    20. {  
    21.     cout << B::getObjCount() << endl;  
    22.     B b1;  
    23.     B b2(10, 20);  
    24.     cout << b1.getObjCount() << endl;  
    25.     cout << b2.getObjCount() << endl;  
    26.     cout << B::getObjCount() << endl;  
    27.     return 0;  
    28. }  


    展开全文
  • const成员函数(常成员函数):成员函数()后加上const,如:void print()const。 2 目的 如果一个成员函数不对对象的任何成员数据的进行修改(最常见的为打印成员信息的函数),那么我们可以将这个成员函数设置为...

    1 定义

        const成员函数(常成员函数):成员函数()后加上const,如:void print()const。

    2 目的

    如果一个成员函数不对对象的任何成员数据的进行修改(最常见的为打印成员信息的函数),那么我们可以将这个成员函数设置为const函数,以保护对象数据。 如果在该函数里面修改对象的成员数据,则编译器就会报错。

    3 用法

    我们通常将 get 函数设置为常成员函数。读取成员变量的函数的名字通常以get开头,后跟成员变量的名字,所以通常将它们称为 get 函数。

         请看下面的例子:

    //student.h 头文件
    class Student
    {
    public:
        Student(char *name, int age, float score);
        void show();
        //声明常成员函数
        char *getname() const;
        int   getage() const;
        float getscore() const;
    private:
        char *m_name;
        int m_age;
        float m_score;
    };
    
    //student.cpp  源文件
    Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score)
    { }
    
    void Student::show()
    {
        cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<endl;
    }
    
    //定义常成员函数
    char * Student::getname() const
    {
        return m_name;
    }
    int Student::getage() const
    {
        return m_age;
    }
    float Student::getscore() const
    {
        return m_score;
    }

    特别提醒:必须在成员函数的声明和定义处同时加上 const 关键字。char *getname() constchar *getname()是两个不同的函数原型,如果只在一个地方加 const 会导致声明和定义处的函数原型冲突

    展开全文
  • 定义常数据成员: 类型 const 对象名;或者 const 类型 对象名; 例如:const clock c1(9,9,9)或者: clock const c2(10,10,10); 常对象的几条特殊规则: ...2、常成员函数,不能调用该类中没有用con

    定义常数据成员:
    类型 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()
    //正确,非常对象可以调用非常成员函数。
    展开全文
  • 常对象 常成员函数是常对象唯一的对外接口。 常对象成员 常数据成员 只能通过构造函数初始化表对常数据成员进行初始化。 常成员函数 只能引用本类的数据成员,但不能修改。 ...
  • 常成员函数:类型说明符 函数名(参数表) const 如:void showDate() const 1.常成员函数可以访问常数据成员,也可访问普通数据成员。 2.常数据成员可以被常成员函数访问,也可被普通成员函数访问。 3.如果将一个...
  • 常数据成员 引言:类存在的目的之一就是为了实现封装性,但是实际上经常...3.无论是普通成员函数还是常成员函数都无法修改其值 常成员函数 引言:为了实现这样一种函数:对于其调用的数据成员只能读取,而不能修改。...
  • 1.常成员函数(定义来自 @阳光璀璨 的专栏) 成员函数有两类,修改对象状态的成员函数,获取对象状态的成员函数。 常成员函数就是一种获取成员状态的函数,并且不能改变对象状态(好智能的感觉)比如class temp { ...
  • 1. 常对象只能调用常成员函数。 2. 普通对象可以调用全部成员函数。 3. 当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。 4....
  • 5-1 常对象成员和常成员函数 例子: 常对象成员: 常成员函数: 上图:常成员函数中为什么不能改变数据成员的值? 上图:编译后this指针是用const指针修饰的,成了一个常指针,通过常指针改变指针指向的...
  • 一、const1、常对象只能调用常成员函数2、普通对象可以调用全部的成员函数包括常成员函数3、常方法不能调用普通方法 可以调用常方法、静态成员方法4、普通方法可以调用常方法解释:当一个成员函数被调用时,自动向它...
  • 在类中,如果你不希望某些数据被修改,可以使用const关键字加以限定。...const成员函数(常成员函数) const 成员函数可以使用类中的所有成员变量,但是不能修改它们的值,这种措施主要还是为了保护数据而设置的。co
  • 常对象成员函数不一定都是常成员函数,常对象的数据成员不一定都是数据成员 常对象一旦初始化,常对象的数据成员便不可允许修改 如果非要修改某个成员变量的话, PS:定义常对象有两种方法 1. .
  • 常成员函数,是指由const修饰符修饰的成员函数,在常成员函数中不得修改类中的任何数据成员的值。常成员函数表示成员函数隐含传入的this指针为const指针,决定了在该成员函数中,任意修改它所在的类的成员的操作都是...
  • C++常成员函数

    2019-11-09 16:15:59
    使用常成员函数用来处理常对象。 常对象只能调用常成员函数; 普通对象可调用全部成员函数。 若在下面的例子中,没有定义void print()函数,则con1.print()调用的是void print() const函数。 #include "pch.h" #...
  • C++ 常成员函数

    2021-01-06 21:35:02
    使用 const关键字修饰的函数为常成员函数常成员函数声明的格式如下: 类型说明符 函数名(参数表) const; #include <iostream> using namespace std; class Test{ private: int t1, t2; public: ...
  • 常对象 声明显示: const 类型说明符 对象名;...3.常成员函数不能更新目的对象的数据成员,因此对于无须改变对象状态的成员函数,最好使用const关键字。 常数据成员 声明形式: const 类型说明符 变量名;  常数

空空如也

空空如也

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

常成员函数