my C++ note 1

1.  定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它

取上一个名字。定义声明最重要的区别:定义创建了对象并为这个对象分配了内存,声明没有分配内存。( C++primer中也说到定义是声明的一种)

 

2. 数据从内存里拿出来先放到寄存器,然后CPU 再从寄存器里读取数据来处理,处理

完后同样把数据通过寄存器存放到内存里,CPU 不直接和内存打交道。寄存器就就像是太监,CPU是皇上,下面的官员要和皇帝通信要太监作为中间人。

 

3.  register变量可能不存放在内存中, 所以不能用取址运算符 “&”来获取 register变量的地址

 

4. static变量存在内存的静态区,静态全局变量,作用域仅限于变量被定义的文件中,其他文件即使用 extern声明也没法使用他。

关于externextern可以用在不同文件中变量的声明,但其变量在其它文件中必须是全局的,如果变量是在函数内,那它根本是不存在的,因为函数要调用到它才给变量分配空间。函数之间的变量也不适合extern

5.函数前加 static使得函数成为静态函数。但此处“static”的含义

不是指存储方式,而是指对函数的作用域仅局限于本文件(所以又称内部函数)。使用内部函

数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件

中的函数同名。

 

6. 好的习惯:所有宏定义、枚举常数、只读变量全用大写字母命名,用下划线分割单词。

例如:

const int MAX_LENGTH = 100;

 

7. sizeof是关键字不是函数。计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。sizeofint*p 等于先求sizeof(int) =4 ,然后再4*p;

int i[100]; sizeof(i) =400 sizeof(&i) = 4 

8. 为了防止头文件被重复引用,应当用 ifndef/define/endif 结构产生预处

理块.  #include  <filename.h>  格式来引用标准库的头文件(编译器将从

标准库目录开始搜索  #include “filename.h”  格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索) 。

 

9. 建议:在C++  语法中,类的成员函数可以在声明的同时被定义,并且自动成为内联函数。

这虽然会带来书写上的方便,但却造成了风格不一致,弊大于利。建议将成员函数的定

义与声明分开,不论该函数体有多么小。

 

10. 不提倡使用全局变量,尽量不要在头文件中出现象 extern int value 

类声明。数组不能extern

11. 头文件用来(1)通过头文件来调用库功能;(2)头文件能加强类型安全检查。

一般库都在头文件里面,最好不要放在定义文件中。

头文件中只存放“声明”而不存放“定义

可将头文件保存于 include 目录,将定义文件保存于 source 目录。以便于维护

例子:

#ifndef  GRAPHICS_H  //  防止 graphics.h 被重复引用

#define  GRAPHICS_H

 

#include <math.h>    //  引用标准库的头文件

#include “myheader.h”   //  引用非标准库的头文件

void Function1(…);  // 全局函数声明

class Box          // 类结构声明

{

};

#endif

 

12. 函数在编译时就会把代码存到代码区。内部的变量又分动态创建的和预先分配的。

比如 int i; 这就是预先分配了;int *p = new int; 这就是动太创建的。栈是预先准备好的(函数)程序运行时是会预先分配所需的内存,而堆则要运行到那里才会动态分配。

 

int *p = new int;

assert(p != NULL); 上面这段代码如果面试时少了分配失败的判断,就危险了

assert<assert>头文件里。#include <assert>头文件

13.类中的static函数你可以理解为这个类应该有的某种属性,而且只要是这个类的实例就都有这个属性,就算没有实例,这个属性也不会变化,总不能说人类灭绝了腿就没了对吧。

一般的static变量程序运行前就会分配内存空间,而在类中定义的一切变量都没有分配空间,包括static变量。所以要给static分配空间就要在类外main函数初始化这时才会是真正的定义。一般的“有定义”(例如:int i;)局部变量要在自己的函数调用时才分配空间的。函数调用是就会给自己内部有定义的变量分配空间,如:int I;假如没加int ,会出现出错,就像变量没定义前就使用一样)

以上的笔记是在看一些书后写下来的一些笔记。加了自己一些了解,如有错误,请指出……^_^

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值