-
- 左值就是可以改变数据的变量,可以出现在左边或右边,出现在右边就变成右值了。 右值只能出现在右边,consts即不是左值也不是右值。
- 内联函数就是短而小的函数,在函数调用的地方直接替换成代码,减少函数调用成本。函数声名成inline int max(int a,int b),或者直接宏定义#define MAX(a,b) ((a)>(b)?(a):(b)).
- typedef相当于对数据类型取别名,typedef int INT; INT a就相当于int a;
- extern就是引用其他文件变量,文件1 int a;文件2 extern int a;这个a就是文件1的a,静态变量,函数无法被其他文件extern。static对于其他文件相当于private。
- 数组大小不能用变量定义,只能用常量。
- C++数组没有length,用sizeof(arr)/sinzeof(int),
- 二维数组是连续,所以可以当一维数组使用比如a[2][2]等同于a[3]
- arr[size]不能用变量名生成,用变量生成数组 int *arr=(int )malloc(sizesizeof(int)); 记得释放 free(arr); 或者int *arr=new int[size];delete arr;
- 常量指针表示指针指向的值是常量,需要注意的是不能用*ptr去改变值,但是原变量仍可以去修改,int a=3;int *b=&a;a=4;cout<<*b;打印出4。指针常量表示指针这个变量不能在指向其他地方就是变量存放的地址值不能在改变了。
- void* 相当于java的object,但是他不能进行运算操作比如++
- 二维数组跟**区别在于二维数组每一行空间要一样,而**不需要。
- 函数指针就是指向函数地址 int (*a)(int a,int b); int b(int a,int b){} int main{a=b;a();} ,也可以把函数当参数传进来,int a(int (*a)(int)){a();}
- 引用比指针简单比如 swap(int &a,int &b); swap(a,b);直接当变量用不用像指针一样解引用。引用的主要左右是解决函数参数传递时还需要拷贝一份这个问题,引用如果只是为了取别名没什么意义
- 结构变量时直接用Person person;person.name;结构指针时用 Person* person; person->name;.结构引用跟结构变量一个区别就是 结果变量是复制一份给函数,而结构引用只是复制地址值
- 用结构指针比结构变量交换要优惠得多,如果结构变量交换,需要每一个成员都交换,但是用结构指针,只需要交换地址即可。 P *p={&p0,&p1}; p[0]=p[1];
- 结构定义不能嵌套结构变量,但可以嵌套结构指针,因为结构定义还未完成不知道大小,但指针只是一个地址值是知道大小的。
- Stu s;相当于调用了无参构造,但不能写成 Stu s();因为分不清是创建对象还是声名返回值为Stu的函数。
- new语法接受类型是指针,Stu s*=new Stu;拷贝构造函数就是入参是这个类,Stu s1=s2;是s2拷贝给s1;
- 函数返回普通类类型,会先产生一个临时对象,然后main在取这个对象,所以我们不能用引用去接受函数返回的对象,因为这一句运行完这个对象就被析构了,引用也没意义了。
- 一个类声明了一个友元函数(这个函数的实现一般是放到其他类的),那么这个函数入参是这个类的时候,就可以直接使用他的private变量。友元类类似。要强调的是,一个学生类里声明教师类是友元类。是声明给教师用的而不是学生用,也就说教师类函数入参是学生类可以使用他的private。
- 一个类公有或私有继承父类,那么外部通过这个类访问父类的权限取决于 继承权限跟父类变量权限更严格的那个。
- 虚拟继承就是希望多个父类都继承一个类时,只有占用一个父类的父类区域,而不是多个。比如沙发和床都继承家具类,沙发床继承家具和床,这样内存区域就会有2个家具类数据,如果沙发和床改成
virtue public Furniture,沙发床就只有一份家具类了。virtue 虚函数相当于接口,表示想要让子类实现多态的 - c++的try需要手动throw ,然后才会走到catch,可以throw字符串,catch就拿字符串接收。
- 左值就是可以改变数据的变量,可以出现在左边或右边,出现在右边就变成右值了。 右值只能出现在右边,consts即不是左值也不是右值。
java转c++需要注意的几个点
最新推荐文章于 2022-03-30 18:32:42 发布