1、类的实现
当不标明private,public,protect等信息时,默认是public的作用域
格式:class 类名标识符
{
public:数据成员的声明;//对外可见,对内可见
成员函数的声明;
private:数据成员的声明;//对外不可见,对内可见
成员函数的声明;
protected:数据成员的声明;//对外不可见,对内可见,对派生类是可见的
成员函数的声明;
};
例子:class cperson
{public:
void getage();
int m_dsalary;
private:
int age;
char name[20];
};
2、对象的声明
格式:类名 对象名表
例如:(1)成员引用方式
cperson p;//前面定义了一个cperson类,但是这个类并不占内存空间,只有在声明类对象之后才占有内存空间,类和对象的关系是,类是对象的一个宏观概念,而对象 是类的特例
p.m_dsalary;
(2)对象指针方式
cperson *p;
p->m_dsalary;//(*p).m_dsalary;
3、构造函数
构造函数的作用:对于数据成员进行赋值设置类的属性。因为类不能像结构体一样直接初始化,所以需要构造函数帮忙。且构造函数可以有参数。
例子:
class cperson
{
public:
cperson(int ilndex);
int m_ilndex;
int getindex();
};
//构造函数
cperson::cperson(int ilndex)//带有参数的构造函数,再主函数调用时直接可以传递值了
{
m_iindex=ilndex;//或者没有参数,直接赋值:m_ilndex=10;
}
4.复制构造函数
复制构造函数的作用:保存对象的副本,以便以后在执行过程中回复对象的状态。用一个已经初始化的对象来新生成一个一模一样的对象。复制构造函数就是函数的参数已经是一个初始化的类对象了。
例子:
class cperson
{
public:
cperson(int ilndex,short shAge,double dSalary);//构造函数
cperson(cperson ©cperson);
……
}
cperson::cperson(int ilndex,short shAge,double dSalary)
{
m_ilndex=ilndex;
m_shAge=shAge;
m_dSalary=dSalary;
}
//复制构造函数
cperson::cperson(cperson & copycperson)
{
m_ilndex=copyperson.m_ilndex;
m_shAge=copyPerson.m_shAge;
m_dSalary=copyPerson.m_dSalary;
}
…………
5析构函数
解释:构造函数主要是用来在对象创建时,给对象中的一些数据成员赋值,析构函数的功能就是来释放这个对象的。它与构造函数的功能相反。
……
class cperson
{
public:
cperson();
~cperson();
……
};
cperson::~cperson()
{
delete[] m_pMessage;
}
6静态类成员
解释:(1)将类成员定义为静态类成员,则允许使用类名直接访问。而其他所定义的类成员,是通过对象来访问的。
(2)静态数据成员是被所有的类对象所共享的,无论定义多少类对象,累的静态数据成员只有一份,同样,如果有一个类对象修改了静态数据成员,则其他对象的引用也将被改变。
(3)静态数据成员可以定义当前类的类型,而其它数据成员则只能定义成当前类的指针或应用类型。
(4)静态数据成员可以作为成员函数的默认参数。
(5)静态数据成员函数:类的静态数据成员函数只能访问静态数据成员。且如果函数实现代码处于类外,则在实现部分不能再标识static关键字。
例子:
class cbook
{
public:
static unsigned int m_price;//定义一个静态数据成员
int m_pages;
static cbook m_vcbook;//正确,静态数据成员允许定义类的所属类对象
cbook m_book;//错误,不允许在该类中定义所属类的对象
cbook *m_pbook;//正确,允许定义类的所属类对象
void output(int price=m_price);//正确,可以用静态数据成员作为参数
void output1(int pages=m_pages);//错位,普通成员不能作为默认参数
};
unsighed int cbook::m_price=10;//初始化静态数据成员
int main (int argc,char* argv[])
{
cbook book;
cout<<,cbook::m_price<<endl;
cout<<book.m_price<<endl;
……
return 0;
}
7、嵌套类:
解释:在定义的类的内部再定义一个类,这样,在定义类时可以访问定义好的嵌套的类。它有很好的密封性,在主函数里,就不能直接调用嵌套类。
例子:
class clist
{
public://嵌套类为公有的
class cnode
{
friend class clist;//将clist类作为自己的友元类。友元类就可以访问自己的私有变量
private:
int m_tag;
public:
char m_name[20];
};
public:
code m_node;
……
};
8、局部类
解释:在函数中定义一个类,这个类就是局部类,只能在内部使用。
9、友元
解释:friend,使用友元就是类拥有了访问其内部私有变量的特权。但又不失封闭性,只能跟它是朋友的人才能访问。
可以用友元定义类成员或者定义一个友元函数或者定义一个全局变量的友元函数。
10、命名空间略。