【C++笔记】《C++编程思想-卷一》笔记

《C++编程思想》笔记

 

Volume 1

 

第一章 对象导言

OOP ObjectOriented Programming 面对对象编程

UML Unified Model Language 统一建模语言

 

堆(stack)和栈(heap

预备知识—程序的内存分配  
  一个由C/C++编译的程序占用的内存分为以下几个部分  
  1、栈区(stack)—   由编译器自动分配释放   ,存放函数的参数值,局部变量的值等。其  操作方式类似于数据结构中的栈。  
  2、堆区(heap)   —   一般由程序员分配释放,   若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。  
  3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放。  
  4、文字常量区   —常量字符串就是放在这里的。程序结束后由系统释放  
  5、程序代码区—存放函数体的二进制代码

 堆和栈的区别可以用如下的比喻来看出:    
 
使用栈就象我们去饭馆里吃饭,只管点菜(发出申请)、付钱、和吃(使用),吃饱了就走,不必理会切菜、洗菜等准备工作和洗碗、刷锅等扫尾工作,他的好处是快捷,但是自由度小。    
 
使用堆就象是自己动手做喜欢吃的菜肴,比较麻烦,但是比较符合自己的口味,而且自由度大。

 

 

第二章 对象的创建与使用

语言的翻译过程-解释器-编译器

 

头文件包含

C++中新定义的方法都是有名字空间的 比如cout就属于std名字空间 如果include头文件的时候加上.h,默认会usingnamespace 否则需要自己加上 using namespace XXX 对于C中已经定义的方法如printf,没有影响的
iostream.h是包含输入/输出流处理的头文件,iostream就什么都不是了 
但用iostream要加名词空间namespace
#include<iostream.h> 或者是 #include<iostream>  using namespace std; 二者都行
#include<iostream.h>是C语言中比较通用的 
#include<iostream>  using namespace std;  是C++中比较通用的

#include<cstdio>和#include<stdio.h>与上文同理

 

关于输入输出流:cout<<hex (dec &oct)<< 15 ;可以按照预定的进制改变输入和输出流的状态 。

 

文件的读写:

#include<fstream>

#include<string>

usingnamespacestd;

intmain()

{

    ifstream in("Scopy1.txt"); //如果文件不存在不会自己创建

    ofstreamout("Scopy2.txt");   //文件不存在会自己创建

    strings;

    while (getline(in, s)) //一次获得一行的字符从in->s

    {

        out<<s<<"\n";

    }

   return 0;

}

 

第三章 C++中的C

Switch case中可以用break,不能用continue

Break和continue只能用于循环语句中,用于加速中循环。

 

goto谨慎使用,建议只在跳出多层循环的地方使用。

Loop:**************

goto Loop;

 

 

C++中的引用

以引用传递允许一个函数去修改外部对象,就像传递一个指针所做的那样。

 

#include<iostream>

usingnamespacestd;

 

voidfunction(int &r)

{

    cout<<"r="<<r<<endl;

    cout<<"&r="<< &r<<endl;

    r = 5;

    cout<<"r="<<r<<endl;

    cout<<"&r="<< &r<<endl;

}

intmain()

{

    intx = 1;

    cout<<"x="<<x<<endl;

    cout<<"&x="<< &x<<endl;

    function(x);

    cout<<"x="<<x<<endl;

    cout<<"&x="<< &x<<endl;

    cin>>x;

    return 0;

}

 

 

void*类型的指针:(不建议常用void*类型的指针,void类型的引用更是禁止使用)

它意味着任何类型都可以间接引用那个指针,一旦间接引用了void*类型的指针,就意味丢失了原来的类型信息,所以使用时一定要(强制)类型转换为使用类型。

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值