您的位置:首页 > 移动开发 > IOS开发

类 构造函数和析构函数及SYS/BIOS中说明

2015-07-04 17:53 369 查看
类是编程人员表达自定义数据类型的C++机制。它和C语言中的结构类似,C++类支持数据抽象和面向对象的程序设计,从某种意义上说,也就是数据类型的设计和实现。
 
一、类的设计
1.类的声明
class 类名
{
private: //私有
...
public: //公有
...
};
 
2.类的成员
一般在C++类中,所有定义的变量和函数都是类的成员。如果是变量,我们就叫它数据成员如果是函数,我们就叫它成员函数。
3.类成员的可见性
private和public访问控制符决定了成员的可见性。由一个访问控制符设定的可访问状态将一直持续到下一个访问控制符出现,或者类声明的结束。私有成员仅能被同一个类中的成员函数访问,公有成员既可以被同一类中的成员函数访问,也可以被其他已经实例化的类中函数访问。当然,这也有例外的情况,这是以后要讨论的友元函数。
类中默认的数据类型是private,结构中的默认类型是public。一般情况下,变量都作为私有成员出现,函数都作为公有成员出现。类中还有一种访问控制符protected,叫保护成员,以后再说明。
4.初始化
在声明一个类的对象时,可以用圆括号()包含一个初始化表。
看下面一个例子:
#include iostream.h
 
class Box
{
private:
int height,width,depth; //3个私有数据成员
public:
Box(int,int,int);
~Box();
int volume(); //成员函数
};
 
Box::Box(int ht,int wd,int dp)
{
height=ht;
width=wd;
depth=dp;
}
 
Box::~Box()
{
//nothing
}
 
int Box::volume()
{
return height*width*depth;
}
 
int main()
{
Box thisbox(3,4,5); //声明一个类对象并初始化
cout< return 0;
}
当一个类中没有private成员和protected成员时,也没有虚函数,并且不是从其他类中派生出来的,可以用{}来初始化。(以后再讲解)
5.内联函数
内联函数和普通函数的区别是:内联函数是在编译过程中展开的。通常内联函数必须简短。定义类的内联函数有两种方法:一种和C语言一样,在定义函数时使用关键字inline。如:
inline int Box::volume()
{
return height*width*depth;
}
 
还有一种方法就是直接在类声明的内部定义函数体,而不是仅仅给出一个函数原型。我们把上面的函数简化一下:
 
#include iostream.h
 
class Box
{
private:
int height,width,depth;
public:
Box(int ht,int wd,int dp)
{
height=ht;
width=wd;
depth=dp;
}
~Box();
int volume()
{
return height*width*depth;
}
};
 
int main()
{
Box thisbox(3,4,5); //声明一个类对象并初始化
cout< return 0;
}
 
这样,两个函数都默认为内联函数了。
 
构造函数有以下特点:
1.构造函数的名字必须与类名相同;
2.构造函数可以有任意类型的参数,但不能具有返回类型;
3.定义对象时,编译系统会自动地调用构造函数;
4.构造函数是特殊的成员函数,函数体可以在类体内,也可写在类体外;
5.构造函数被声明为公有函数,但它不能像其他成员函数那样被显式调用,它是在定义对象的同时被调用的。
 
析构函数有以下特点:
1.析构函数的名字必须与类名相同,但它前面必须加一个波浪号  ~  ;
2.析构函数没有参数,也没有返回值,而且不能被重载,因此在一个类中只能有一个析构函数;
3.当撤销对象时,编译系统会自动地调用析构函数。
 
SYS / BIOS 中类构造函数和析构函数
 
任何一个C ++类的对象实例化时,会执行类构造函数。同样,任何时间一类对象被删除,类的析构函数被调用。因此,当写类构造函数和析构函数,你应该考虑在该功能预计将执行并定制他们的时钟。因此,当类的构造函数或析构函数被调用的时候,考虑什么类型的线程将运行是非常重要的。各项准则适用于哪些SYS / BIOS API函数,可以从不同的SYS / BIOS称为  线程(任务,软件中断和硬件中断)。例如,内存分配API,例如作为Memory_alloc()和Memory_calloc()不能被称为从一个软件中断的范围内。因此,如果一个特定的类是由一个软件中断实例化,其构造必须避免执行内存分配。  同样,要记住,在其中一类的析构函数,预计运行时间是非常重要的。不仅确实一类的析时执行的对象被明确删除,而且当一个本地对象进入超出范围。你需要知道什么类型的线程正在执行的上课的时候​​调用析构函数 并作出恰当的线程只有那些SYS/ BIOS API调用。有关更多信息,功能callability,看到CDOC在线文档。
 
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: