1:对于一个有封装性的类,主要通过公有消息和外界交互。
2:类的成员函数的定义,可以写在类里,也可以写在类外面,更常见的是写在类外。区别:编译时,写在类里的函数被编译器当做内连函数处理。
3:如果要将在类体外定义的成员函数声明为内联成员函数,只要在定义前加上inline。
4:在体内定义成员函数的方式与普通的定义方法相同。在类体外定义一个成员函数则要使用作用域运算符: :
格式为《inline》 <类型><类名>::函数名(<形参表>)
5:对于公有成员函数,既可以在类体内调用,又可以在类体外通过对象直接调用。而私有和保护的成员函数只能在类体内调用
构造函数总结
1:在定义类时不能对类中的成员数据直接初始化,但在创建对象时,可借助四种方法初始化
2:这是我以前最迷糊的地方:
初始化列表法。什么叫初始化列表法呢?
在创建对象的同时允许对他的公有成员数据用一种特殊方式初始化,称为初始化列表法
Class ccreat
{
public:
int x,y;
}x1,x2={58,68};
注意在创建对象时不允许利用这种方式对私有和受保护成员数据进行初始化。
在同一个程序中,一个类可以定义多个对象,在创建对象时,编译系统只为对象中的成员数据分配存储
控件,而同类对象的成员函数的代码却是共享的,即将类的成员函数的代码放到一个公共区域中,为该类所有的对象所共有,而不是为每个对象都复制一份成员函数的代码。
创建一个对象所占用 空间就是为他的数据成员的所占用的存储空间。
访问私有只能通过公有间接的访问。
3:通过在类中定义一个成员函数,该函数能够对对象中的成员数据进行设置。
#include <iostream.h>
class ListClass
{
int *List;
unsigned nMax;
unsigned nElem;
public:
void Init(int n = 10)
{
List = new int[n];
nMax = n;
nElem = 0;
}
int Elem(int);
int &Elem(unsigned n){return List[n];};
&Elem(unsigned n){return List[n];};
......
}
int ListClass::Elem(int elem)
{
.....................................
}
4:构造函数