C/C++基础知识(随时更新)

1.带参数的main()函数,即main(int argc,charargv[]),argc是不需要输入的,编译器自动推测,argv是输入char,输入几个char第一个参数的值就是多少再加1。注意:默认数组里第0个元素是程序全名。
2.char型本身是字符型,比如‘a’等等,char
才是字符串,字符串本身是地址,直到 \0 就结束。
3.对于带指针的类。拷贝构造和拷贝复制都需要,拷贝构造其实就是重载构造函数,拷贝复制就是重载=运算符。析构也要写。
4.static指类独有的,不要this指针就可访问。
5.iterator class可以有迭代器的功能,需要自己打造,重载+ ++ = * 等运算符。
6.friend 其实就是想访问类中的private成员,写一个return函数也可以达到要求。
7.函数对象又叫仿函数,实际是个类,对()重载了,优点是带状态,可以拥有不同状态。
8.typedef 只是对已有的类型别名定义,不产生新的类型。#define只是在预处理的时候对代码简单替换。两者并没有什么联系。
typedef int arr[3]; //arr的类型是int[3]
arr a; //typedef只有一块也行呀,不一定非要有两块。
9.派生类构造:先基类构造,再派生类构造,析构相反。
10.protected的成员可以被派生类直接访问
11.凡是基类有一个或者多个虚函数,析构函数应该声明为虚函数(不建议是纯虚函数),不然会调用基类的析构。非虚函数在编译时就解析。
12.(重要)在C++中,唯有用基类的pointer和reference才能支持面向对象编程概念。Essentisl c++p163
13.stl容器中list自带sort()
14,泛型编程:将数据和方法分开
15.模板:函数模板,类模板,成员模板
16.静态数据成员可以被非静态成员函数访问。但静态成员函数只能访问静态数据成员。
17.对于数组,数组地址就是首个元素的地址,但是vector不一样!!
18.inline解决什么问题:频繁调用同一个函数消耗栈空间。虚函数,while,switch是无法内联的,虚函数是在运行时才能确定,和内联相反。类中定义的成员函数的缺省值是内联,声明的需要自己在类外加inline,就是给编译器一个建议让他成为内联。内联是以代码复制为代价省去代码调用
19.lambda注意点:传参还是传引用;const还是mutable;返回值类型可以不加(编译器能判断出来)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值