C++入门知识

C++入门篇

一.命名空间

1.命名空间一namespace开始,后面跟命名空间的名字

2.命名空间的名字在其所在作用域中是唯一的,命名控件可以在全局作用域或者其它作用域内部定义,但是不能在函数或者类的内部定义。

3.每一个命名空间都是一个作用域

①命名空间中的每个名字必须引用该命名空间中的唯一实体,命名空间中的实体称为命名空间的成员,不同命名空间的成员可以具有相同的名字。
②命名空间内部各成员之间可以直接访问,外部的代码必须指出所引用成员名字定义在哪个命名空间中。
命名空间优秀博客连接:http://blog.chinaunix.net/uid-26404477-id-3088450.html

二.函数的重载

在同一作用域类,一组函数的函数名相同,参数列表不同(个数不同/类型不同),返回值可同可不同。

三.引用

1.引用对比于值传递、和传指针:

#include<iostream>
using namespace std;
void fun1(int a,int b)//值传递
{
    int temmp=a;
    a=b;
    b=a;
}
void fun2(int& a,int& b)//引用
{
    int temp=a;
    a=b;
    b=temp;
}
void fun3(int* a,int* b)//传指针操作
{
    int* temp=a;
    a=b;
    b=temp;
}
int main()
{
    int a = 9;
    int b = 10;
    fun1(a,b);
    printf("%d %d\n",a,b);
    std::cout<<a<<" "<<b<<endl;
    fun2(a,b);
    printf("%d %d\n",a,b);
    std::cout<<a<<" "<<b<<endl;
    fun3(&a,&b);
    printf("%d %d\n",a,b);
    std::cout<<a<<" "<<b<<endl;
}

1.①:传值操作并不能对实参进行改变,因为形参是实参的临时拷贝,而且随着栈帧的销毁形参也会被销毁。②:指针可以直接访问实参的地址对其进行操作,可以通过指针来改变实参。③:引用是实参的不别名,可以说直接就是实参,那么就可以直接对操作进行。

2.引用和指针比较和区别

1. 引用只能在定义时初始化一次,之后不能改变指向其它变量(从一而终);指针变量的值可变。
2. 引用必须指向有效的变量,指针可以为空。
3. sizeof指针对象和引用对象的意义不一样。sizeof引用得到的是所指向的变量的大小,而sizeof指针是对象地址的大小。
4. 指针和引用自增(++)自减(–)意义不一样。
5. 相对而言,引用比指针更安全。

总结一下:

指针比引用更灵活,但是也更危险。使用指针时一定要注意检查指针是否为空。指针所指的地址释放以后最好置0,否则可能存在野指针问题。
void Swap (int& l, int& r)
{
    int temp = l;
    l = r;
    r = temp;
}
void Test()
{
    int* p = 0;;//当p=0,其实它是一个空指针
    int& a = *p;//在这里是引用一个空指针,所以走到Swap函数时会出问题
    //int c = 5
    //int* p = &c;
    //int& a = *p;
    int b = 2;
    Swap (a, b);
    std::cout<<a<<" "<<b<<endl;
}
int main()
{
    Test();
    return 0;
}

四.C++省缺参数

“`
int add(int a=0,int b=0)//全缺省
{
return a+b;
}
int add1(int a,int b=0)//半缺省,不能接受0个参数
{
return a+b;
}
int main()
{
int i = 0;
i=add(1,2);
printf(“%d\n”,i);
i=add(1);
printf(“%d\n”,i);
i=add();
printf(“%d\n”,i);
i=add1(1,2);
printf(“%d\n”,i);
i=add1(1);
printf(“%d\n”,i);
return 0;
}

猜你喜欢

转载自blog.csdn.net/fangxiaxin/article/details/73655798