1 / 57
文档名称:

C 类和动态内存分配.ppt

格式:ppt   大小:113KB   页数:57页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C 类和动态内存分配.ppt

上传人:薄荷牛奶 2018/12/2 文件大小:113 KB

下载得到文件列表

C 类和动态内存分配.ppt

相关文档

文档介绍

文档介绍:提要
本章介绍对类使用动态分配技术,以及由此引起的问题的处理。
动态内存的使用将影响构造函数,析构函数的设计和操作符的重载
动态内存和类
一个使用动态内存的例子
class StringBad
{
private:
char * str; // pointer to string
int len; // length of string
static int num_strings; // number of objects
public:
StringBad(const char * s); // constructor
StringBad(); // default constructor
~StringBad(); // destructor
// friend function
friend std::ostream & operator<<(std::ostream & os,
const StringBad & st);
};
以下是其实现()
静态类成员的初始化
int StringBad::num_strings = 0; ///注意:
静态类成员位于静态存储区,并不是类对象的组成部分;
在类声明中声明,不可初始化(静态const整型或枚举除外除外);
在类方法实现文件中初始化。使用类型名和定义域限制操作符,不用关键字static。
然后是构造函数
StringBad::StringBad(const char * s)
{
len = std::strlen(s); // set size
str = new char[len + 1]; // allot storage
std::strcpy(str, s); // initialize pointer
num_strings++; // set object count
cout << num_strings << ": \"" << str
<< "\" object created\n"; // For Your Information
}
注意:字符串并没有保存在对象中,而是在单独的堆内存中。对象中存储字符串的地址。
析构函数
StringBad::~StringBad() // necessary destructor
{
cout << "\"" << str << "\" object deleted, "; // FYI
--num_strings; // required
cout << num_strings << " left\n"; // FYI
delete [] str; // required
}
此处析构函数是必须的。在构造函数中用new分配内存,必须在析构函数中用delete释放内存
。其中定义了两个函数:一个传引用作参数,一个传值作参数
void callme1(StringBad & rsb)
{
cout << "String passed by reference:\n";
cout << " \"" << rsb << "\"\n";
}
void callme2(StringBad sb)
{
cout << "String passed by value:\n";
cout << " \"" << sb << "\"\n";
}
1: "Celery Stalks at Midnight" object created
2: "Lettuce Prey" object created
3: "Spinach Leaves Bowl for Dollars" object created
headline1: Celery Stalks at Midnight
headline2: Lettuce Prey
sports: Spinach Leaves Bowl for Dollars
String passed by reference:
"Celery Stalks at Midnight"
headline1: Celery Stalks at Midnight
String passed by value:
"Lettuce Prey"
"Lettuce Prey" object deleted, 2 left
headline2: 葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺葺
Initialize one object to another:
sailor: Spinach Leaves Bowl for Dollars
Assign one object to a

最近更新

用药与急救- 30页

“三高四新”战略背景下金融支持制造业高质量.. 8页

空间光通信中激光二极管光束准直分析 2页

积水输卵管的形态结构及其相关不孕症的诊疗应.. 2页

福建农村公共文化产品供需关系研究 2页

社会规则领域幼儿心理理论的发展研究 2页

磷脂酰肌醇3激酶和蛋白激酶B在小儿血管瘤中的.. 2页

硅气凝胶玻化微珠复合保温砂浆研究 2页

短叶决明化学成分及质量控制的研究 2页

相移合成孔径数字全息术的研究 2页

盐雾条件下染料光褪色的研究 2页

百年老品牌视觉形象设计的传承与重塑 2页

瘦素在肝细胞癌中的表达及意义 2页

电力系统交流电量采集器的设计 2页

生长素在斑马鱼胚胎发育中的作用以及卵泡抑制.. 2页

生物催化合成水溶性导电聚苯胺的研究 2页

珠江口最大浑浊带活动区生源要素特征及浮游生.. 2页

现代汉蒙专业术语翻译研究 2页

环戊并二噻吩衍生物的合成及其光电性能的研究.. 2页

预防艾滋病宣传标语 10页

风会记得一朵花的香读后感 5页

我在巴厘岛SPA的亲身体验散文 2页

2022年乡镇公务员干部入党申请书范文 3页

减肥的数学建模 15页

危急心律失常的识别及处理 89页

有限元分析实验报告(共16页) 16页

我国企业年金基金管理与风险分析 4页

圣经中生日祝福的经文圣经中的生日祝福2篇 11页

教练技术第三阶段导师讲义14页版本一(首周末).. 18页

气体灭火系统施工方案 12页