C++ 类定义
1、在类内部定义的函数默认为inline;
在类内部声明成员函数是必须得,定义成员函数是可选的。
2、将关键字加在形参表之后,可以将成员函数声明为常量
const 必须同时出现在声明和定义中。
3、可以声明一个类,而不定义它
class screen;
向前声明,类screen是一个不完全类型
不完全类型只能以有限方式使用:
不能定义该类型的对象
只能定义指向该类型的指针及引用
用于声明(而不是定义)使用该类型作为形参类型、返回类型的函数。
4、返回*this
在普通非const成员函数中,this的类型是一个指向类类型的const指针,可以改变this所指向的值,但不能改变this所保存的地址
在const成员函数中,this是一个指向const类类型的const指针
const成员函数只能返回*this作为一个const引用。
可以在非const对象上调用调用const成员函数,但不能在const对象上调用普通成员
5、基于成员函数是否为const,可以重载一个成员函数
const对象只能使用const成员
非const对象可以使用任一版本,但const版本是一个更好地匹配
6.默认构造函数
为所有形参提供默认实参的构造函数也定义了默认构造函数
一个类哪怕只定义了一个构造函数,编译器夜不会再生成默认构造函数
7.使用默认构造函数
Sales_item myobj;
Sales_item myobj=Sales_item();
8.可以用耽搁实参来调用的构造函数定义了从 形参类型 到 该类型 的隐式转换。
通过将构造函数声明为explicit,来防止在需要隐式转换的上下文中使用构造函数。
explicit关键字只能用于类内部的构造函数声明上,类外部的定义不在重复。
单形参的构造函数应该为explicit,除非有明显的理由想要定义隐式转换
9.友元机制 允许一个类将对其非公有成员的访问权授予指定的函数或类。
friend class Window_Mgr;
friend void f();
friend std::istream& operator>>(std::istream&,Sales_item&);
10.static 成员函数
a.在类外部定义static成员时,无须重复指定static保留字
b.static函数没有this指针 不能为const 不能为虚函数
11.static成员
static数据成员必须在类定义体外部定义
不是通过构造函数进行初始化,而是在定义时初始化
特殊的整形const static成员可以在类定义体中进行初始化
static const int period=30;
static 数据成员可以用作默认实参