内联函数和宏的区别:
1.内联函数在运行时可调试,而宏定义不可以;
2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;
3.内联函数可以访问类的成员变量,宏定义则不能;
4.在类中声明同时定义的成员函数,自动转化为内联函数。
------------------------------------------------------------------------------------------------
指针和引用的区别:
指针其实也是一种值传递,不过它传的是地址而已,引用传递是传入栈中偏移这可以从反汇编后看出来指针是把变量的地址入堆栈,函数开始出栈后,只能改变指针改向的地址处的内容,而不能改变指针的值!!而引用传递压入的是偏移,在函数开始出栈后直接将栈+偏移来操作传入参数,所以引用使用的是同一个对象,不需要额外产生对象的拷贝,提高了效率。
引用:变量的别名;不分配内存空间;定义时必须同时初始化;一旦初始化后其值不能改变;指针:是一个变量;分配内存空间;定义时可以不必初始化;