重读Essential C++读书笔记1

来源:互联网 发布:美国进出口数据公布 编辑:程序博客网 时间:2024/05/01 15:13

重读Essential C++读书笔记1

放假有点时间,打算重新好好地读一次essential c++这本书,原来读这本书的时候,时间跨度太大了,导致与看了后面忘了前面。打算这次着重放在面向对象这方面。

By sssa2000

7/24/2004

第一章 c++编成基础

 

1、对象的定义和初始化

书中提到了我们少用的一种初始化方法,一般来说初始化我们都这样:

int a=100; 但是如果有多个初始值,比如给一个复数赋值,需要有虚部和实部,那么这种方法就不能用了, 可以使用构造函数赋值法:complex<int>a(2,4) 表示给一个复数变量a赋值为(2,4),同样,把int a=100转换成这种方法:int a(100)

 

2Arrays Vectors

比较两种容器的声明:

int a[10];

vector<int>a(10);

vectorarray的用法更加灵活,但是初始化来说arrayvector方便。

初始化的时候如果你写下这样的句子,编译器会提示出错:vector<int>a(4)=1234)。因为vector不支持这种方式的初始化。必须这样:

vector<int>a(4);

a[0]=1;

a[1]=2;

a[2]=3;

a[3]=4;;

或者利用一个已经初始化的数组:

int b[4]={1,2,3,4};

vector<int>a(b,b+4);

我们知道其实数组名就是这个数组在内存中的地址,所以这里传给vector的是数组b的启示和终止地址。

我们可以使用a.size()来获得vector的大小,所以vector比较适合长度常常改变的数据。

 

3、还是指针

前几天写了关于C语言中的指针的文章,这里又看见指针真得很亲切。

书中提到了要检测空指针的重要性,可见大师果然不一样,看了很多书,很少有提到要检测空指针的,其实空指针正是十分危险的东西。

假设有以下几个vectora,b,c,d 我们需要在程序中根据不同的情况来存取这4vector,可以声明一个数组:

vector* e[4]={&a,&b,&c,&d};

这里,e是一个数组,类型为vector* 这样我们就可以通过e[i]来操作这4vector

 

4、文件读写:

主要就是流的具体运用。

#include <iostream>

#include<string>

#include<fstream>

main()

{

string a="hello",b="world";

ofstream outfile("1.txt");

if (!outfile)

cerr<<"unable to open file";

else outfile<<a<<b<<endl;

}

当然我们可以使用ofstream outfile("1.txt"ios_base::app); 来使用append模式

 

这里我们使用的是ofstream来写入,我们当然可以使用ifstream来读入。

main()

{

string a="hello",b="world",c;

ifstream infile("1.txt");

if (!infile)

cerr<<"unable to open file";

else

{infile>>c;

cout<<c;

}

}

 

(第一章完)