自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 第十六章 复习题

1.这里RQ1包含了一个字符串,public里面其实就是一个默认构造函数,一个构造函数,一个复制构造函数,一个析构函数,一个赋值符运算如果用string的话复制构造函数,析构函数和赋值运算符都可以因为string对象提供了自己的内存管理功能而省去#include using namespace std;class RQ1{private:string st;publ

2016-12-28 05:15:59 266

原创 第十六章

C++类库(不是内裤)和stl博大精深,我等初学者肯定现在只有远观还不能亵玩了。本节讲到stl后面基本就基本只能算看懂了,估计要真明白会用得专门那本书去学。这章写到第五节就基本写不下去了。。。先贴上来留个纪念吧,等以后明白了再回来修改现在编程很少有人重头编写了,基本都是直接运用然后部分重写前辈编写的代码。C++的类库就是为这个设计的。这一章首先从最常见的string类讲起。1.stri

2016-12-20 03:45:12 275

原创 第十五章 编程练习

编程练习1//tv.h#ifndef TV_H_#define TV_H_#include <iostream>class Tv{public: friend class Remote; enum {Off, On}; enum {MinVal, MaxVal = 20}; enum {Antenna, Cable}; enum {TV, DVD};

2016-12-13 04:14:08 320

原创 第十五章 复习题

1. a. clasp是友元类,所以声明友元的时候必须的加上一个classfriend class clasp;b.这种情况必须前向声明相关类和函数snip(muff &);class muff;class cuff {...};class muff {..};c. 跟b的情况一样,需要前向声明相关类和函数class muff;class cuff

2016-12-12 03:51:41 310

原创 第十五章(2)

3. 异常下面讲本章的重点类,异常。出了异常肯定要处理了,C++异常为处理异常提供了功能强大而灵活的工具。一个很简单的例子就是a/b,要是b是0怎么办书中举了一个函数double hmean(double a, double b) {return 2*a*b/(a+b); }如果a=-b怎么办呢,最简单的方法就是调用abort方法终止程序double hmean(double

2016-12-08 05:37:25 300

原创 第十五章(1)

现在讲的越来越深了,有的时候笔记都不知道怎么记了,很多也只能直接抄书上的。这里尽力吧,原谅我们这些初学者:)1. 友元友元现在很熟悉了,如果声明一个函数为一个类的友元,则这个函数可以访问这个类的成员。类也可以将类作为友元,这样友元类的所有方法都可以访问原始类的私有成员和保护成员。这样有什么作用呢?书中举了一个Tv类和一个Remote类的例子。两个类没有从属关系,更像是朋友关系,这个时候

2016-12-07 05:12:59 419

原创 第十四章 编程练习(2)

编程练习4//Person.h#ifndef PERSON_H_#define PERSON_H_#include <string>#include <iostream>class Person{private: std::string name;protected: const std::string &GetName() const { return name; }

2016-12-06 05:43:55 321

原创 第十四章 编程练习(1)

编程练习1//winec.h#ifndef WINEC_H_#define WINEC_H_#include <iostream>#include <string>#include <valarray>#include <utility>using namespace std;typedef valarray<int> ArrayInt;typedef pair<ArrayInt, A

2016-12-06 04:48:48 282

原创 第十四章 复习题

上个礼拜各种事,没有按时学习,惭愧惭愧 :(1.回答这题就是看左右两边是is-a关系还是has-a关系,is-a就用公有继承,has-a就用私有继承公有继承;私有继承;公有继承;私有继承;最后一个有点tricky,Driver是一个人,所以可以public 继承person。Driver可以has一辆automobile,所以可以private继承Automobile。

2016-12-06 03:34:50 286

原创 第十四章 C++中的代码重用(2)

3. 多重继承上节Student同时继承了String和Valarray类,这个就是多重继承了。这个功能很强大,因为跟实际相符(比如现在的平板,有时可以看出一个电脑,有时也可以归为手机),但用起来也很麻烦,一个很简单的问题就是假如两个(多个)基类都有同名的方法怎么办。书中举了一个抽象基类Worker,派生出Waiter和Singer两个基类,然后可以定义一个SingerWaiter

2016-12-01 05:04:44 252

原创 第十四章 C++中的代码重用(1)

1. 包含对象成员的类既然类的数据成员可以是标准类型,数组,结构,那肯定也可以是另外一种类了。最简单的例子就是已经看到的string类来表示这个类的对象的名字了。string类前面介绍了很多,这章又介绍了一个新类valarray,用于处理数值,支持诸如将数组中所有元素的值相加以及在数组中找出最大和最小的值等操作。这个类是一个模板类,支持各种数据类型,但声明具体对象的时候必须加上

2016-11-29 05:58:14 255

原创 第十三章 编程练习

编程练习1//Classic.h#ifndef CLASSIC_H_#define CLASSIC_H_//base class#include <cstring>class Cd{private: char performers[50]; char lable[20]; int selections; double playtime;public:

2016-11-26 06:16:11 263

原创 第十三章 复习题

1. 所以public和protected下的数据成员和方法成员2. private中的数据成员和方法成员3. 如果返回void,那么调用这个函数是赋值运算符=左边的对象=void,类型不符编译不会通过如果返回的不是引用,则直接返回对象,之前会生成返回对象的临时副本。返回对象的时间成本包括调用复制构造函数来生成副本所需的时间和调用析构函数删除副本所需的时间。

2016-11-25 04:59:38 198

原创 第十三章 类继承

继承很好理解了,如果我们开发了一个水果的类,我们可以继续开发一个苹果的子类或者橙子的子类。苹果和橙子的子类都可以继承水果类的特性和方法。那么这个继承是怎么实现的,哪些可以继承哪些不能继续,苹果和橙子之间又是什么关系,让我们带着这些问题来看这章。1. 一个简单的基类从一个类(水果)派生出另一个类(苹果,橙子)时,原始类(水果)称为基类,继承类称为派生类(苹果,橙子)。书中给了一个简单

2016-11-25 04:31:25 353

原创 第十二章 编程练习

这章开始编程练习都好长,敲都要敲半天。。。 编程练习1//Cow.h#ifndef COW_H_#define COW_H_class Cow{private: char name[20]; char * hobby; double weight;public: Cow(); Cow(const char * nm, const char * h

2016-11-24 05:26:33 375

原创 第十二章 复习题

1. 类成员str是一个指针,因此构造函数必须提供内存来存储字符串。否则str只保存了地址,而没有在堆中指向的内存创建足够的内存并创建字符副本2. 必须在析构函数中使用delete来在对象使用结束时释放初始化时创建的内存应该定义复制构造函数应该定义赋值函数3. 默认构造函数,如果没有定义构造函数默认析构函数;复制构造函数;赋值运算符;地址运算符-返回调用对象

2016-11-23 04:40:02 261

原创 第十二章 类和动态内存分配

前面说过,通常最好在程序运行时确定诸如使用多少内存的问题,方法就是使用new来创建动态内存并在使用完之后delete掉。怎么对类成员使用动态内存分配就是本章的主要内容了。这本书到这里也逐步加深了。1. 动态内存和类在类中使用new和delete运算符对类成员进行动态内存分配看似很强大,但代价是使用起来会导致许多新的问题,所以用起来必须小心。1.1 这一小节举了一个StringB

2016-11-22 03:03:12 241

原创 第十章 编程练习4-7

编程练习4//MyTime.h#ifndef MYTIME_H_#define MYTIME_H_#include <iostream>class Time{private: int hours; int minutes;public: Time(); Time(int h, int m); ~Time(); void AddMin(in

2016-11-21 04:31:36 258

原创 第十一章 编程练习1-3

编程练习1 这里Vector的类定义没有修改,只需修改主函数,所以这里就只把更改后的主函数贴出来了#include <iostream>#include <cstdlib>#include <ctime>#include <fstream>#include "vector.h"int main(){ using namespace std; ofstream fin;

2016-11-21 03:16:22 240

原创 第十一章 复习题

1.Stonewt Stonewt::operator*(double d){ }2. 定义时不同,友元函数不需要使用限定符成员函数可以通过this指针来访问对象自己,友元函数则不能。3. 对4.friend Stonewt Stonewt operator*(double d, Stonewt s1)Stonewt operator*(do

2016-11-20 20:18:05 285

原创 第十一章 使用类(1)

前面一章终于学习了类,但类博大精深,一章基本也就知道了怎么定义使用最简单的类。这一章就稍微深入探讨一下类之所以强大的许多特性。1. 运算符重载运算符重载是一种形式的多态,它允许赋予C++运算符多种含义。比如我们想做这样的加法evening = sam + janet ,这三个都是三个对象,这时候我们就要对加号重载。运算符函数的格式如下operatorop(argument-

2016-11-20 16:32:42 219

原创 第十章 编程练习

编程练习1//account.h#ifndef ACCOUNT_H_#define ACCOUNT_H_#include <string>using std::string;class Account {private: string fullname; string ID; double deposit;public: Account(string, s

2016-11-19 23:00:26 267

原创 第十章 复习题

1到4问题都太抽象了,这里就略过了5.class Account{private:string name;int ID;double deposit;public:show();void add();void withdraw();}6.构造函数在声明一个类的对象的时候调用,析构函数在这个对象使用结束之后调用7.Account

2016-11-18 05:07:23 253

原创 第十章 对象与类(2)

类跟结构不一样的地方还有一个就是类应该要提供构造函数和析构函数。构造函数专门用于构造新对象,将值赋给它们的数据成员。构造函数最主要的特点就是名称与类名一样,同时构造函数没有返回值而且不能声明类型。比如前面说的Stock类,它的构造函数就是Stock(...),首先再说明一下,构造函数没有返回类型。同时,构造函数的参数表示的不是类成员,而是赋给类成员的值,因此,参数名不能与类成员相同

2016-11-18 04:15:18 231

原创 第十章 对象和类

C++跟C相比最重要的改进就是提供了类,这本书到了第十章终于讲这个了。。。而且还是最基础的基础,可见C++博大精深啊,路漫漫其修远兮,吾只能慢慢一点一点求索啊 1. 过程性编程和面向对象编程学习类肯定得知道为什么有类,类是为了面向对象的编程,区别于老一代面向过程的编程。过程性编程就是首先考虑要遵循的步骤,然后考虑如果一步一步表示这些数据。但是实际情况往往不是一步一步来的,一会跳到这

2016-11-17 23:37:26 596

原创 第九章 编程练习

编程练习1// golf.cpp#include "golf.h"#include <cstring>#include <iostream>using namespace std;void setgolf(golf & g, const char * name, int hc){ strcpy(g.fullname,name); g.handicap = hc;}int

2016-11-17 04:45:09 392

原创 第九章 复习题

1.a 自动存储,内部链接b 静态存储,外部链接c 静态存储,内部链接d 静态存储,无链接2. using声明只导入声明的名称,using编译指令导入所以该名称空间下的名称;如果程序声明了一个跟要导入的namespace的名称相同的名称,则不能使用using声明该名称;如果使用了using编译指令,则程序函数声明的名称会隐藏名称空间相同名称的变量3.就是在所

2016-11-16 05:46:05 273

原创 第九章 内存模型和名称空间

1.单独编译单独编译就是说讲组件函数放在独立的文件中;之后要修改这个函数,只需要重新编译该文件,然后叫它与其他文件的编译版本链接。这样说可能还是比较抽象;到现在为止大家都很熟悉每个函数例子必备的#include 了吧;简单的说就是可以把组件函数放在一个叫做头文件的文件中,然后其他函数来#include这个头文件就可以链接到这个头文件里。书中举了一个包含结构,对结构操作的函数和主

2016-11-16 03:17:22 250

原创 第八章 编程练习

编程练习1#include <iostream>using namespace std;void p(char ch[]);void p(char ch[], int i);const int ChSize = 40;int main(){ char ch[ChSize]; cout << "please enter a string: "; cin.getlin

2016-11-15 05:08:34 308

原创 第八章 复习题

1. 比较短小的函数,太大了占用内存太多。2. a. void song(const char * name, int times = 1);b.函数定义不需要做任何改变c.不可以,因为是const3.void iquote(int i);void iquote(double d);void iquote(string s);4.

2016-11-15 04:20:30 248

原创 第八章 函数探幽(2)

3. 默认参数默认参数值的是当函数调用中可以给实参赋上一个默认值,这样函数调用时没写实参就自动使用这个默认值默认值(只能)在函数原型中添加。如:double fun(int n = 1);这样fun()就等同于调用fun(1);对于带参数列表的函数,必须从右向左添加默认值:int fun(int a, int b = 2, int c = 3); //可以int

2016-11-15 03:18:38 179

原创 第八章 函数探幽(1)

这章英文名字叫adventures in Functions,中文译者把它翻译成函数探幽。。。1. 内联函数内联函数是C++提高程序运行速度所做的一项改进。常规函数执行时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈,跳到标记函数起点的内存单元,执行函数,然后跳回到地址被保存的指令处。这一跳一跳的就降低效率了。而内联函数就不会跳来跳去,但代价就是需要占用更多内

2016-11-15 02:20:45 229

原创 第七章 编程练习

编程练习1#include <iostream>using namespace std;double average(double a, double b);int main(){ double a,b; double c; cout<<"please enter two numbers: "; while((cin>>a>>b)) {

2016-11-14 03:31:39 249

原创 第七章 复习题

1. 函数原型,函数定义,函数调用2.a. void igor()b. float tofu(int x)c. double mpg(double a,double b)d. long summation(long ar[],int n)e. double doctor(const char*str)f.  void ofcourse(boss b)g st

2016-11-13 03:56:17 230

原创 第七章 函数(2)

将结构作为函数的参数就比数组简单多了,基本就跟其他数据类型差不多了,在这种情况下,函数也是是由原始结构的复本。有的时候结构本身比较大,这个时候将结构的地址(&struct)而不是结构本身传递给函数,这个时候函数头或者函数原型就要把形参声明为指针类型struct *struct,如果不想改变结构,还得前面加上const,这样形参就是const struct *struct也可

2016-11-13 03:05:00 180

原创 第七章 函数(1)

C++创建使用一个函数必须完成三个工作:提供函数原型 提供函数定义调用函数首先讲函数定义的通用格式:typeName functionName(parameterList){statementsreturn value}如果这个函数没有返回值的话,typeName就是void,return value这一行也可以省略。C++的函数可以返回任何类型:整

2016-11-12 23:51:52 234

原创 第六章 编程练习(6-9)

编程练习 6#include <iostream>#include <string>using namespace std;struct donation { string donor; double amount;};int main(){ cout << "Enter the number of donor: "; int num; cin >>

2016-11-12 23:35:26 152

原创 第六章 编程练习(1-5)

编程练习1#include <iostream>using namespace std;int main(){ char ch; cout << "Please type here: " ; cin.get(ch); while(ch !='@') { if (isdigit(ch)) { cin.g

2016-11-11 05:55:30 243

原创 第六章 复习题

1. 基本没啥区别吧,version2看起来更明了吧2. 会输出ch对应的整形值+13.注意while循环中的if括号里面是复制语句ch='$', 不是关系表达式ch=='$', 所以这个只是把‘$’赋给了ch,然后ct2++,所以输出为:H$i$!$S$e$n$d$ $ct1 = 9, ct2 = 9;4.a.weight>=115 && we

2016-11-11 04:30:26 241

原创 第六章 分支语句和逻辑运算符

if语句if语句用来判断是否执行某个操作,具体有三种用法最简单的:if (test-condition)statement也可以让程序决定执行两条语句或语句块的哪一条if (test-condition)statement 1elsestatement 2如果由两个以上的选择的话if (test-condition 1)statement 1

2016-11-11 02:42:58 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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