精华内容
下载资源
问答
  • c++常对象

    2012-08-16 21:26:24
    c++虽然采取了不少有效措施(如设private保护)以增加数据的安全性,但是有些数据却往往是共享的,例如实参和形参,变量与其引用,数据及其指针等,人们可以在不同的场合通过不同的途径访问同一个数据对象。...

    c++虽然采取了不少有效措施(如设private保护)以增加数据的安全性,但是有些数据却往往是共享的,例如实参和形参,变量与其引用,数据及其指针等,人们可以在不同的场合通过不同的途径访问同一个数据对象。有时在无意之中的误操作会改变有关数据的状况,而这是人们所不希望出现的。

    既要使数据能在一定范围内共享,又要保证它不被任意修改,这时可以使用const,即把有关的数据定义为常量。


    #include <iostream>
    
    using namespace std;
    
    
    class Time
    {
            public:
                    Time(int h, int m, int s):hour(h),minute(m),second(s){}
                    void display() const;//这里如果不加const的话,常对象是无法调用这个函数的
    
            private:
                    int hour;
                    int minute;
                    int second;
    };
    
    void Time::display() const
    {
            cout << hour << endl << minute << endl << second << endl;
    }
    int main()
    {
            const Time time(5,58,45);//定义常对象
            time.display();
    }
    


    展开全文
  • C++常对象

    2012-08-15 15:28:00
    http://www.cctwl.com/CLanguageDetail.asp?id=65 http://www.cctwl.com/CLanguageDetail.asp?id=69 转载于:https://www.cnblogs.com/children/archive/2012/08/15/2640169.html

    http://www.cctwl.com/CLanguageDetail.asp?id=65

    http://www.cctwl.com/CLanguageDetail.asp?id=69

    转载于:https://www.cnblogs.com/children/archive/2012/08/15/2640169.html

    展开全文
  • C++常对象精讲

    2013-09-20 16:29:09
    C++常对象精讲
  • 常对象 常对象是指该对象在其生命周期内,其所有的数据成员的值都不能被改变;定义对象时加上关键字const,该对象就是常对象,其一般形式如下: 类名 const 对象名[(实参类别)]; 或者 const 类名 对象名[(实参类别...

    常对象

    常对象是指该对象在其生命周期内,其所有的数据成员的值都不能被改变;定义对象时加上关键字const,该对象就是常对象,其一般形式如下:

    类名 const 对象名[(实参类别)]

    或者

    const 类名 对象名[(实参类别)]

    形如:const CComplex num;

    需要特别说明的是:

    • 常对象只能调用常成员函数,不能调用普通成员函数 (除了隐式调用析构函数和构造函数),常成员函数是常对象的唯一对外接口;
    • 现在编译系统只检查函数的声明,只要发现调用了常对象的成员函数,而且该函数未被声明为const,编译阶段就报错
    • 常对象在被定义时需要被初始化;

    常数据成员

    如果我们希望在创建对象后,该对象的某个数据成员就保持不变,我们可以将这个数据成员设置为常数据成员;常数据成员只能通过构造函数初始化列表进行初始化,其他形式的函数均不能进行数据的赋值;

    常成员函数

    若将成员函数设置为常成员函数,则只能引用本类中的数据成员,而不能修改它;常成员函数可以引用const数据成员,也可以引用非const的数据成员;常成员函数的一般形式为:

    类型名 函数名(形参列表) const {函数体}
    

    这里的const关键字是函数类型的一部分,在函数声明和函数定义时都要带const关键字,否则被编译器认为是不同的两个函数,但是在函数调用的时候不必带const;

    展开全文
  • 用const修饰的定义对象称为常对象; 用const修饰的声明成员函数称为常成员函数; 用const修饰的声明数据成员称为常数据成员。 变量或对象被 const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始...
  • C++ 常对象和常函数

    2020-12-01 00:56:21
    在成员函数的声明及定义的形参括号后边加上const关键字,注意如果存在声明的话,声明和定义都必须加上const,这就叫函数,函数指的是成员函数,没有普通函数不能用const修饰。 class Person { public: void ...

    常函数

    在成员函数的声明及定义的形参括号后边加上const关键字,注意如果存在声明的话,声明和定义都必须加上const,这就叫常函数,常函数指的是常成员函数,普通函数不能用const修饰。

    class Person {
    public:
    	void test() const;
    };
    
    void Person::test() const {
    }
    

    在设计类的时候,一个原则就是对于不改变数据成员的成员函数都要在后面加 const,而对于改变数据成员的成员函数不能加 const。所以 const 关键字对成员函数的行为作了更加明确的限定:

    (1)有 const 修饰的成员函数(指 const 放在函数参数表的后面,而不是在函数前面或者参数表内),只能读取数据成员,不能改变数据成员;没有 const 修饰的成员函数,对数据成员则是可读可写的。
    (2)除此之外,在类的成员函数后面加 const 还有什么好处呢?那就是常量(即 const)对象可以调用 const 成员函数,而不能调用非const修饰的函数。

    记住这几条规则就够用了:

    • const对象只能调用const成员函数
    • const成员函数只能调用const成员函数
    • const成员函数中不能改变成员变量的值
    • 存在声明的话,声明和定义都必须加上const

    常函数底层机制探索

    const本质上修饰的是this指针,网上很多这样写:
    void print() const => const 类名 * const this,
    实际上this指针本身就是const指针,即其值不可修改,也就是指向不可修改,并非const功劳,所以应该写成:
    void print() const => const 类名 * this,
    所以const函数保证了this指向的对象是个常对象,导致我们无法修该对象的值。

    值得注意的是,如果类中存在指针类型的数据成员即便是const函数只能保证不修改该指针的值,并不能保证不修改指针指向的对象。如:

    class Name {
    public:
    void setName(const string &s) const;
    private:
        char *m_sName;
    };
    void setName(const string &s) const {
        m_sName = s.c_str();      // 错误!不能修改m_sName;
        for (int i = 0; i < s.size(); ++i) 
            m_sName[i] = s[i];    // 不好的风格,但不是错误的
    }
    

    常对象

    const关键字能够修饰对象,得到只读对象,只读对象只能调用const成员函数。

    展开全文
  • C++常对象、常成员函数的学习 #include "stdafx.h" #include using namespace std; class R { private:  int r1,r2; public:  R(int r1=0,int r2=0):r1(r1),r2(r2){}//构造函数  void chang();  //void print()...
  • C++常对象及其成员

    2018-06-03 12:17:12
    C++虽然采取了不少有效的措施(如设private保护)以增加数据的安全性,但是有些数据却往往是共享的,人们可以在不同的场合通过不同的途径访问同一...常对象在定义对象时指定对象为常对象常对象必须要有初值,如: ...
  • 常对象成员函数不一定都是常成员函数,常对象的数据成员不一定都是数据成员 常对象一旦初始化,常对象的数据成员便不可允许修改 如果非要修改某个成员变量的话, PS:定义常对象有两种方法 1. .
  • c++常对象和常成员函数详解

    千次阅读 2017-07-15 21:52:19
    常对象常对象是指该对象在其生命周期内,其所有的数据成员的值都不能被改变;定义对象时加上关键字const,该对象就是常对象,其一般形式如下:类名 const 对象名[(实参类别)]; 或者 const 类名 对象名[(实参类别)...
  • 数据成员 一个类中的数据成员是可以被const修饰的,被称为数据成员;数据成员与普通数据成员初始化的方式并不相同 假设有一个Coordinate(坐标)类,用const修饰他的数据成员 class Coordinate { public: ...
  • #include using namespace std; class A { public: ...void Print()const //成员函数 { cout<<“2:n”<<n<<endl; } private: int n; }; int main(int argc, const char * argv
  • C++ 常对象和常成员函数

    千次阅读 2016-10-03 09:46:52
    常对象:不能修改的对象。“只读”。使用const声明,声明时必须初始化。 格式: const 类名 对象名 (初始化列表)  类名 const 对象名 (初始化列表) const Point p(100,200);  常成员函数 只能访问...
  • 常对象成员函数不一定都是常成员函数,常对象的数据成员不一定都是数据成员 常对象一旦初始化,常对象的数据成员便不可允许修改 如果非要修改某个成员变量的话,声明为mutable PS:定义常对.
  • http://blog.csdn.net/huangyimo/article/details/52154821
  • void Test()const //方法 其中this指针由Test* const--> const Test*const {} Test(int a):ma(a),mb(b) //构造函数(使用了初始化列表) {} private: int ma; int mb; const int mc; ...
  • C++常对象与常成员函数的关系

    千次阅读 2013-08-28 08:15:54
    (1) 常对象 用const修饰的对象叫对象常量,其格式如下: 〈类名〉const 〈对象名〉 或者 const 〈类名〉〈对象名〉 声明为常对象的同时必须被初始化,并从此不能改写对象的数据成员。 例:分析下列错误的...
  • 用const修饰的声明数据成员称为常数据成员用const修饰的声明成员函数称为常成员函数用const修饰的定义对象称为常对象变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。(一)...
  • · 用const修饰的定义对象称为常对象 变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。 (一)用const修饰的声明数据成员称为常数据成员   有两种声明形式: const int ...
  • 用const修饰的声明数据成员称为常数据成员用const修饰的声明成员函数称为常成员函数用const修饰的定义对象称为常对象 变量或对象被const修饰后其值不能被更新。因此被const修饰的变量或对象必须要进行初始化。 ...

空空如也

空空如也

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

c++常对象

c++ 订阅