简单c++的一些知识点

一、命名空间的定义

           1.定义命名空间,需要用到namespa关键字,后面跟上命名空间的名字,然后接上{}即可,{}中即为命名空间的成员,命名空间中可以定义变量/函数/类型等。

           2.不同的命名空间可以拥有相同名字的函数,其本质是一个独立的域,并不会产生冲突。

           3.域分为函数局部域,全局域,命名空间域,类域。前两者会对生命周期有影响,后两者则不会。

           4.namespace仅能在全局定义,它还可以嵌套定义(即在全局定义的namespace中可以再定义一个域)。

           5.多文件中同名的namespace会被认为是一个域,会在逻辑上进行合并。如下:

                              

namespace ruosu
{
    int rand = 0;
}//头文件中
int rand = 10;
namespace ruosu
{
   int rand = 0;
}//主文件中
 cout<<ruosu::rand<<endl;//结果为0
 cout<<rand<<endl;//结果为10,这里默认访问的是全局变量中的rand的值

二、命名空间的使用

       1.大多数情况下推荐直接指定命名空间访问,如上。

        2.可以将命名空间中的某个成员展开。

        3.还可以直接将命名空间中的所有成员展开,但是风险较大,不推荐使用。

            

namespace ruosu
{
   int rand = 0;
   int sky = 10;
}//主文件中
using ruosu::sky;//将部分不冲突的成员展开
int main()
{
  cout<<ruosu::rand<<endl;
  cout<<sky<<endl;
}//输出结果应为0,10
/// 
using namespace ruosu;//将全部成员展开

三、缺省参数

        1.全缺省:
          

void func1(int a = 10,int b = 0,int c =1)//全缺省即为全部参数都可以不传递值
{
   cout<<a<<" "<<b<<" "<<c<<endl;
}//输出结果应为10 0 1
void func2(int a,int b = 10,int c = 20)//半缺省为部分参数可以不传值
{
  cout<<a<<" "<<b<<" "<<c;
}
int main()
{
   func1();
   func1(1);
   func1(1,2);
   func1(1,2,3);
   func2(100);
   func2(100,200);
   func2(100,200,300);   
   //func2()这种写法会报错
   return 0;
}

四、函数重载

        1.与C语言中的不同是C++中的函数允许重名,只不过参数的类型不能一样,也可以是参数个数不同,满足以上两点中的任意一点且函数命一样则构成了函数同载。这样体现了C++调用函数的多态行为,使用起来更加灵活。最最重要的一点是,在如下的例子中可以使用同一个函数名去处理不同类型的情况,这样的感觉比起C中要写两个不同名字的情况真的很爽!!!

 

int Add(int a,int b)
{
   return a+b;
}
double Add(double a, double b)
{
   return a+b;
}
int main()
{
  c = Add(2,3);
  d = Add(3.12,4.32);
  cout<<c<<" "<<d<<endl;
}//输出结果应为5 7.44

五、引用

       1.类型& 引用别名 = 引用对象;

    

int main()
{
  int a = 0;
  int& b = a;
  int& c = b;
  a = 1;
cout<<a<<" "<<b<<" "<<c;//输出结果应为0 0 0
}//引用的本质就是给引用对象取一个别名,就相当于水浒传中的林冲可以叫他为豹子头,也可以叫他林冲,本质上是同一个人

六、类的定义

        1.class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或者成员函数。

using namespace std
class Stack//类的定义
{
  public:
     void Init()
             {}
     void Push()
             {}
   private:
   int* a;
   int  b = 1;

}
int main()
{
  Stack a;
  c = a.b;//c = 1//private和protect需要间接使用
  Init();//public可以直接使用
}

  2.图中的public和private以及未出现的protect都叫做访问限定符,public后面的可以直接访问,后两者则需要间接使用。

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值