zoukankan      html  css  js  c++  java
  • 十-----对象和类

    十-----对象和类

    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;
    
    1. 析构函数无参
    2. 如果构造函数使用了new,析构函数必须调用delete
    3. 只要类方法不修改调用对象,就应该申明为const
    void show( ) const;
    
    1. this指针
    const Stock & Stock :: topval ( const Stock & s ) const
    {
    	if (s.total_val > total_val)
    		return s;
    	else
    		return *this; 
    }
    //第一个const表示返回类型为const引用
    //第二个const表示函数不能修改显示调用的对象
    //第三个const表示函数不能修改隐式调用的对象
    
    1. 对象数组
    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]
    
    1. 要使用作用域为类的常量,即常量由所有对象共享。
      直接在数据成员中定义const变量是不可行的,此时并没有实例化
      有两种方法,一:枚举; 二:static静态数据类型
    private:
    	enum{ ok = 100 };
    					
    private:
    	static const int ok = 100;
    
  • 相关阅读:
    CodeForces gym Nasta Rabbara lct
    bzoj 4025 二分图 lct
    CodeForces 785E Anton and Permutation
    bzoj 3669 魔法森林
    模板汇总——快读 fread
    bzoj2049 Cave 洞穴勘测 lct
    bzoj 2002 弹飞绵羊 lct裸题
    HDU 6394 Tree 分块 || lct
    HDU 6364 Ringland
    nyoj221_Tree_subsequent_traversal
  • 原文地址:https://www.cnblogs.com/machine-lyc/p/9798031.html
Copyright © 2011-2022 走看看