- 局部变量:在C++中允许局部变量和可执行语句交替出现,而且可以在任何地方声明局部变量。而C语言中不允许。
- 结构、联合和枚举类型:C++中允许结构名等直接作为类型名。C++中结构体中可以含有函数。
- 引用:内存空间相同,就相当于多了一个别名。
(1)不能建立引用数组。
(2)不能建立引用的引用*。
(3)把引用的地址赋给一个指针,指针指向的是原来的变量。
(4)不能建立指向引用的指针,可以建立对于指针变量的引用 .`
int &*p=n;//第一种
int i,*p=&i;
int *&q=p;//第二种
- 在函数中,传递的是实参,不会改变形参的值,函数中生成的历史对象用完就会被释放,想要返回到函数中生成的参数,必须声明为静态参数。
- const常量定义:(尽量放在头文件里面)
const int LIMIT=100;
int const LIMIT=100;
const与指针:
指向常量的指针: const char *pc="abcd";
指的是指针指向的内容为常量.
常指针:int *const pc=&i;
指的是指针本身是一个常量,也就是指针的地址为常量.
注意:
常量的地址不能赋给指向变量的指针.例如:const int b=100;int *p=&b;
原因:出于安全考虑,可能通过指针修改常量的值.
- 内联函数:与宏定义的意思差不多,在进行内联函数调用的时候,相当于进行替换.(好处:既具备宏代码的效率,又增加了安全性,而且可以自由操作类的数据成员.)
#include<iostream>
using namespace std;
inline double circle (double r)
{ return 3.1416*r*r;}
int main()
{
double area;
for(int i=1;i<=3;i++)
{
area=circle(i);//内联函数调用
cout<<"r="<<i<<"area="<<area<<endl;}
return(0);}
- 函数的重载:
当两个或以上的函数用同一个函数名,成为函数重载.
include<iostream>
using namespace std;
int square(int i)
{ return i*I;}
double square(double i)
{ return i*I;}
int main()
{ int i=2;
double d=2.2;
cout<<i<<"*"<<i<<"="<<square(i)<<endl;
cout<<d<<"*"<<d<<"="<<square(d)<<endl;
return(0);}
注意:
可以有对于参数类型和返回值类型的重载;但不允许由参数类型和个数相同,但返回值类型不同的重载.