qq20004604的博客

github.com/qq20004604

(一三五)第十二章编程练习

1.对于下面的类声明 class Cow{ char name[20]; char * hobby; double weight; public: Cow(); Cow(const char*nm, const char * ho, double wt); Cow(const Co...

2016-01-30 01:56:04

阅读数 590

评论数 0

(一三四)第十二章复习题

1.假设String类有如下私有成员: class String { private: char*str; //points to string allocated by new //... }; a.下述默认构造函数有什么问题? String::String(){} b.下述构...

2016-01-30 01:35:01

阅读数 425

评论数 0

(一三三)队列模拟

所谓队列,大概就是指能够容纳一定数量有序的项目,新的项目被添加到队尾,也可以删除队首的项目。(比如银行排队办业务)   队列是先进先出原则(栈是LIFO)。         队列的特征有: ①队列存储有序的项目序列; ②队列所能容纳的项目数有一定限制; ③应当能够创建空队列; ...

2016-01-30 01:32:55

阅读数 466

评论数 0

(一三二)类的三种常见技术

重载>运算符: 例如:ostream& operator 其中: ①ostream类表示cout等,也支持写入文件的ofstream类。同理,也可以换位istream、ifstream类(但要把重载运算符也换为>>);   ②Player&表示类对象的引...

2016-01-30 01:22:26

阅读数 331

评论数 0

(一三一)指向对象的指针

类对象也可以像基本类型那样,使用指针。   假如有Man类的对象a,可以使用指针指向它: Man* c=&a; 这里表示指针c(类型为Man)指向对象a的地址(使用地址运算符&)。   也可以使用new: Man *a=new Man; 这是new一个动态内存地址,...

2016-01-30 01:17:22

阅读数 377

评论数 0

(一三〇)有关返回对象的说明

当函数/成员函数,返回对象时,有几种返回方式: ①返回指向对象的引用(例如String& operator=(xx,xx));   ②返回被const限定的指向对象的引用(例如const String& operator=(xx,xx));   ③返回const对象(这个之前没有遇...

2016-01-30 01:14:17

阅读数 564

评论数 0

(一二九)类中使用new

在类定义——主要是类的构造函数中使用new时,需要注意很多问题: ①按照一个new对应一个delete的原则。   ②构造函数中使用new/ new [],那么析构函数中就应该使用delete/ delete[];   ③析构函数中使用delete/ delete[],那么构造函数、默认...

2016-01-30 01:11:34

阅读数 442

评论数 0

(一二八)比较成员函数、中括号表示法、静态成员函数

有比较函数是strcmp (参数1, 参数2)   参数是两个字符串,所在头文件是   比较方法是按顺序依次比较参数1和参数2的第一个字符(看ASCII值)。 假如相同,则比较下一个; 假如参数1的比参数2的大,则返回1(正数); 假如参数1的比参数2的小,则返回-1(负数); 假...

2016-01-25 14:56:11

阅读数 679

评论数 0

(一二七)动态内存和类——第十二章

面对基本类型的时候,我们可以使用动态内存(new和delete)。   而面对类的时候,也可以使用动态内存,只不过使用方法有区别。   例如声明一个私有成员,想要这个私有成员的值为一个字符串(但这个字符串是什么是未知的)。 首先,不考虑用char word[40];这样的。原因有两点:①...

2016-01-25 14:47:33

阅读数 465

评论数 0

(一二六)第十一章编程练习

这是我创建的专辑,所有学习笔记都以word格式上传,放在里面,相对更美观和直接。欢迎下载浏览。 http://download.csdn.net/album/detail/2971 1.修改程序清单11.5,使之将一系列连续的随机漫步者位置写入到文件中。对于每个位置...

2016-01-23 02:32:57

阅读数 1062

评论数 0

(一二五)第十一章复习题

1.使用成员函数为Stonewt类重载乘法运算符,该运算符将数据成员与double类型的值相乘。注意用英石和磅表示时,需要进位。也就是说,将10英石8磅乘以2等于21英石2磅。 答: Stonewt Stonewt::operator*(double a) { Stonewt q; q....

2016-01-23 02:27:22

阅读数 477

评论数 0

(一二四)给类对象赋值、以及类对象的返回值

于直接给对象赋值: 之前学过,如何给对象在初始化时进行赋值。 对于C++11来说,初始化方式有三种: ① man c = man{ "cc",1 }; ② man d = { "dd",1 }; ③ man f{ "ff",1 ...

2016-01-23 02:26:53

阅读数 673

评论数 0

(一二三)矢量坐标计算

一个类,包含极坐标和直角坐标。   两个这样的类对象,通过运算符重载,可以直接相加/相减,并得出一个新的坐标,而这个新坐标,是原来两个对象的矢量相加的结果。   代码如下: //Point.h 包含类定义 #pragma once class Point { public: enum ...

2016-01-23 02:22:13

阅读数 1004

评论数 0

(一二二)友元函数

由于C++控制了对类对象的访问(例如不允许访问私有成员)。于是,通常公有类方法(例如:成员函数)提供唯一的访问途径。   这样保护了私有成员,但同时又因为这种限制太严格,以致于不适合特定的编程问题。   在这种情况下,C++提供了另外一种形式的访问权限:友元。     友元有三种: ...

2016-01-23 02:20:39

阅读数 395

评论数 0

(一二二)运算符重载——第十一章

本章重点是类设计技术,而不是通用原理。   C++的重点是多使用。 正如我之前写了这么多的学习笔记一样,几乎绝大部分的代码,都是我根据书上的知识,然后理解自行再创造写下的。虽然遇见了不少问题,但解决后,下次再遇见这类情况,解决起来很轻松,绝大多数都可以直接靠记忆书写代码,即使个别忘记了,回头...

2016-01-23 02:13:56

阅读数 409

评论数 0

(一二一)第十章编程练习

1.为下面这个类提供方法和定义,并编写一个小程序用于演示所有特性。 一个类来表示银行账户,数据成员包括储户姓名、账号(使用字符串)和存款。成员函数执行如下操作: ①创建一个对象并将其初始化; ②显示储户姓名、账号和存款; ③存入参数指定的存款; ④取出参数指定的款项。 #include...

2016-01-19 01:11:52

阅读数 2524

评论数 0

(一二一)第十章复习题

1.什么是类? 答: 类是用户自定义类型,有私有成员(不能被外界直接访问)和公有成员(需要用“类名.公有成员名”来访问)。类的链接性为内部(即只在当前文件可用),类不能在函数内部定义。 补充:类声明指定了数据将如何存储,同时指定了用来访问和操纵这些数据的方法(类成员函数)。     2...

2016-01-19 00:57:11

阅读数 739

评论数 1

(一二〇)抽象数据类型

抽象数据类型(abstract data type, ADT),是以通用的方式描述数据类型,而没有引入语言或实现细节。   程序员常常通过定义类,来表示更通用的概念,而对于抽象数据类型,使用类是一种非常好的方式。   当类概念使用ADT方法时,一般是这样做: ①私有部分必须表示数据存储的...

2016-01-19 00:55:28

阅读数 501

评论数 0

(一一九)类作用域

变量、函数具有不同的作用域,C++的也引入了一种新的作用域:类作用域。   在类中定义的名称(如类数据成员和类成员函数名)的作用域,都为整个类,作用域为整个类的名称,在该类之中是已知的,在类外是不可知的(如私有成员变量、公有成员变量和函数也算,因为需要使用作用域解析运算符才能调用)。   ...

2016-01-19 00:53:04

阅读数 405

评论数 0

(一一八)对象数组

对象的数组,和声明一个普通的结构数组并没有什么区别。   在默认情况下,单纯的声明一个对象数组(未显式的调用构造函数时),那么将调用默认构造函数为对象数组的每个成员进行赋值(具体赋值情况需要根据默认构造函数而定)。   如代码: #include #include class man ...

2016-01-19 00:50:42

阅读数 279

评论数 0

提示
确定要删除当前文章?
取消 删除