C/C++
0. C++从C发展而来,在语言层面上增加了面向对象编程方法。由于引入了对象,相对于面向过程的C就有了新的考虑和需求需要在语言层面实现,也就是需要编译器实现,比如constructor,使用函数,就叫 constructor fuc、visual func、继承。
1. c/c++语言 - C++基础语法 - C部分
1.1 引用类型:在C语言中是不存在引用类型的,在C++中有引用类型。
创建引用类型的初衷,是它比指针用起来更安全(指向不允许更改),在阅读代码时它比指针用读起来更加友好自然和在某种场合(传对象)下比指针更适合做函数的形参。
引用和变量标识符(变量名)不全等,有一点差别。比如不存在引用的引用,只有“一级”引用。
引用是C++是编译器处理的对象。到了汇编层次上,引用已经被编译器转化成了指针,这时已不存在引用。
证例,下面的代码可以用g++编译并运行成功,但是gcc编译报错。
#include <stdio.h>
void MyPrint(char& temp)
{
printf("MyPrint:: temp is %c\n", temp++);
}
int main(void)
{
char ca = 'V';
char &rca = ca;
MyPrint(rca);
printf("main:: ca is %c\n", ca);
while (1);
}
思考:
为什么C没有引用类型呢?因为没有那个需求,系统变量粒度都是built-in类型,如果使用了引用也无妨,所以后来C++编译器允许C风格的引用。因为C++引进了对象这一大型变量,粒度变大了,使用指针在安全性和阅读性方面都增加了编码的负面影响,故引进引用这一概念。总之,引用能做的指针都能做,指针能做的引用不一定能做,只是在某些场合下(面向对象函数传参)引用用起来更合适。
2. c/c++语言 - C++基础语法 - 类的基础知识
2.1 由同一个类所创建的所有对象他们互为友元。
2.2 构造函数有其他种类的函数没有的地方是函数的初始化参数列表,由单冒号引出。
构造函数也可以放在private区域,对外提供初始化函数,这样适用于sigleton(只允许创建一份实例对象)的场合。
构造函数无返回值,构造函数的函数名和他的类名一样。