十-----对象和类

十-----对象和类

  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;
posted @ 2018-10-16 14:58  JeffreyLee  阅读(178)  评论(0编辑  收藏  举报