10.对象和类

Posted machine-lyc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10.对象和类相关的知识,希望对你有一定的参考价值。

10-对象和类

  1. 程序员使用私有成员函数来处理不属于公有接口的实现细节
  2. 内联函数定义部分加上 inline,声明部分不需要
  3. 在OOP中,调用成员函数被称为发送消息 "send message"
  4. 自定义构造函数的参数名不能与类成员名相同,为了使得参数名更直观,通常在数据成员名前加前缀m_,或者加后缀_,以避免混乱
  5. 没有定义构造函数时,编译器会自动提供默认构造函数;但是一旦定义了非默认构造函数,就必须再手动定义一个默认构造函数
  6. 默认构造函数有两种定义方法,一种是无参,另一种是有参,但所有参数都有默认值。通常,不管有无参数,都应该用默认值初始化所有的参数。即无参的默认构造函数也应该在函数体内赋予数据成员默认值。两种定义方法不能同时使用

             //构造函数隐式与显示调用
             class food = class( "Ok",30,4.76 );
             class food( "Ok",30,4.76 );
             class *ptr = new class( "Ok",30,4.76 );
    
             //默认构造函数隐式与显示调用
             class good;
             class good = class( );
             class *pre = new class;
  7. 析构函数无参
  8. 如果构造函数使用了new,析构函数必须调用delete
  9. 只要类方法不修改调用对象,就应该申明为const

             void show( ) const;
  10. this指针

            const Stock & Stock :: topval ( const Stock & s ) const
            {
                if (s.total_val > total_val)
                    return s;
                else
                    return *this; 
            }
        //第一个const表示返回类型为const引用
        //第二个const表示函数不能修改显示调用的对象
        //第三个const表示函数不能修改隐式调用的对象
  11. 对象数组

            const int STKS = 3;
            Stock food [STKS] = {
                Stock("NanoSmart", 12, 20.0),
                Stock( ),
                Stock("Monolithic Obelisks", 130, 3.25),
            };
    
            //访问
            food[0], food[1], food[2]
  12. 要使用作用域为类的常量,即常量由所有对象共享。
    直接在数据成员中定义const变量是不可行的,此时并没有实例化
    有两种方法,一:枚举; 二:static静态数据类型

            private:
                enum{ ok = 100 };
    
            private:
                static const int ok = 100;


以上是关于10.对象和类的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌套片段和动画对象

[C++ Primer Plus] 第10章对象和类程序清单——辨析三个const

C++ Primer Plus 第六版中文版(10 对象和类)

synchronize——对象锁和类锁

Java 对象和类

对象和类