C++ 总结-1

1.bool 为了使用方便,可移植性,会定义成其他类型

typedef bool int

cout << boolalpha << bool  显示对应的true false

2.enum INIT

{

       one,

       two,

       INIT_max //方便使用

};

3.浅拷贝导致析构两次

4.delete 指针不是将该指针置为NULL,而是搞事系统该指针指针的内存可以继续被动态分配

5. 常量指针一定要初始化

6.sizeof(a)/sizeof(int)    这样写不易出错

sizeof()编译阶段处理

也可将数组和枚举类型结合使用

7.将数组名作为参数传到被调函数时已经退化为一个指针 sizeof()不是数组的长度,而是一个指针的长度

所以最好把数组的长度也传进去

8.cin >> s  // s接受到空格就停止

cin.get(s,20)

cin.get()   //  接受最后的换行字符   这样下一个cin.get(s1,20)才可以接受到字符

或者使用 string  s;  getline(cin, string);

9.在类内定义的成员函数,称为内联函数。在体外实现叫外联函数(比较狭义)

函数短小,执行次数多,编译器会自行优化为内联函数,因为主要节省的是函数切换的时间,如果函数执行的时间占主要就不划算了。

10.return  *this ; 匿名对象,分配了新的空间,且生命周期只在这一行

11.#include<sys/time.h>

int get1timeofday();

12.刷新

cout << '\r'

cout << flush;

13.与c不一样 c++将const 变量当做  编译期常量处理, 不为其分配空间 ,将其值保存在名字表中,只有加上volatile

14.const

(1)const数据成员

要初始化列表中初始化

(2)const函数必须只能在类内定义,并且不可以修改函数

int  fun() const;

与int fun();构成重载

函数的第一this指针,分为常量和非常量的this指针

所以可以通过修改(强制转换)this指针的属性,可以修改类的数据成员

 

非常量对象可以调用常量函数、非常量函数

常量对象可以调用常量函数

常量对象不可以调用非常量函数

常量函数和非常量函数重载时, 非常量对象调用非常量函数,常量对象调用常量函数

(3)修饰形参

15.mutable属性,只能用于类的数据成员,不能用于普通变量

常量函数可以修改该属性的数据成员

16.static

静态全局变量和普通全局变量,前者作用域在本文件,后者就是整个工程

类外初始化

const  static int a = 100;声明初始化

静态函数可以被类的所有对象访问,但它只可以访问类的静态成员

******静态对象,数据初始化只会有一次,其他会被编译器优化***********

17.形参为对象时,参数传递是会调用该对象的复制构造函数

 18.先复制成功,再释放掉旧的空间,因为新的空间可能申请失误。

 19.复制构造函数与赋值运算符函数

一个初始化调用,一个对象已经定义好了,才会调用

string s = "asdasd";  //复制构造函数

20.匿名对象(临时对象)    生命周期只有当前行

(1)传参时参数

(2)类型转换

(3)函数返回值

(4)显示调用构造函数

21. C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit

22. 全特化模板   template<>

       偏特化模板   template <template T, unsigned int N>

      编译器先匹配特殊模板,再匹配普通模板

23.仿函数的本质是对“”()“”的运算符重载

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值