c++笔记

来源:互联网 发布:电子cad设计软件 编辑:程序博客网 时间:2024/05/23 14:41
1. int main(int argc, char *argv[], char *arge[]);

主函数中,argc是参数个数,argv是参数内容,arge是环境变量。

2.指针p被free之后会成为野指针,在没有将指针p置为NULL的情况下,如果再次free就危险了。所以,在free之后,最好是马上将指针置为NULL,这样就安全了。对于一个NULL的指针,free多少次都没有问题。定义指针的时候最好初始化,初始化指针的时候是用:char* p = NULL;

3.

    char a[] = "hello";    a[0] = 'X';//正确可以正常赋值    cout << a << endl;    char *p = "world"; // 注意p指向常量字符串,是一个字符常量,不能被修改。    p[0] = 'X'; // 编译器不能发现该错误    cout << p << endl;//但是运行时出现错误。
4.悬空指针:指向一个已经不存在的指针, 比如说函数的返回引用

char* func(){char a = 'a';//在函数调用完毕之后,a会被释放。return &a;//不要返回普通局部变量的地址。}
5.共用体 同时只能存储其中的一种类型。如
union one4all{int int_val;long long_val;double double_val;};条件是在不同的时间运行。

6.clock()返回程序开始执行后所用的系统时间,它的返回值为clock_t(类型别名:即转换为适合系统的的其他类型)包含在ctime头文件系统中。符号常量CLOCKS_PER_SEC(每秒钟包含的系统时间单位数)。

7.关于函数指针:

 // double pan(int)和double (*pf)(int);两个都是函数,并且pf就是函数指针。  pf = pam;//那么pf现在指向pan()函数。(pam()的特征标和返回类型必须与pf相同 double pam(int);double (*pf)(int);pf = pam;double x = pam(4);double y = (*pf)(5);//两者都在调用同一个函数。double y = pf(5);//使用指针来调用函数。
8.对于修改调用函数中数据的函数。函数调用传参数:
如果对象是内置数据类型,则使用指针。
如果对象是数组,则只能使用指针。
如果对象是结构,则使用引用或指针。
如果对象是类对象,则使用引用。

9.常规new操作符的地址在动态管理的堆中  布局new操作符在从数组中申请内存。
如果有数组 int buffer[500]
常规new:int *ps = new int [20];   可以使用 delete [] ps;删除
布局new: int *ps = new (buffer) int [20]; 不能用delete删除 会出错由于分配的不在delete范围内;
10.通过定义一个了类重载函数调用操作符(),可以使该类的对象像函数的行为,那么它的对象就是函数对象。函数的对象通常用作算法的实参。

11.通过定义复制构造函数为私有的,可以禁止复制,通过声明而不定义,那么友元也不能访问复制构造函数。

12.++i  比 i++ 执行效率高,因为不需要返回临时对象,当i为迭代器的时候差距会更明显。

13.#ifndef STRING_H   #define STRING_H  #endif 可以避免多次包含同一头文件。

14.补充:在类中成员变量前声明mutable关键字表示,那么该成员变量在const成员函数里可以在被改变。 

15.为了保证成员函数在执行过程中不会修改const成员,那么需要在类成员函数的后面添加const。

17.在类中定义常量可以使用 static const int size = 100; 和 enum { size = 1000 }。static成员不能在类中初始化,只能在定义的时候初始化。

18.inline 函数:省去了参数压栈、生成汇编语言的CALL调用、返回参数、return等过程,从而提高速度,但是浪费了空间。

19.使用复制构造函数和operator=的时候区别是:当用来创建对对象的时候使用前者,否则使用后者。例如:Obj o = a;(等价于Obj o(a))(拷贝构造函数) o = a;(赋值操作符)

20. extern int a; 表示变量是在文件以外定义的,或在文件后面部分定义的。(不需要给a分配空间。)

21.带.h和不带.h的头问家的区别是:一个模板化版本,一个没有。后者一般都在文件名前加一个字母“c”;

22.C++中不允许,利用返回值来重载函数。



原创粉丝点击