2021-11-13

                                               C++与C的区别  作业

1. 区别以及命名空间

C++在某些程度上是兼容C的

注意区分 C++工程源文件后缀名为cpp      C语言工程源文件为.c

头文件引入的区别

#include<stdio.h>   //C语言的头文件引入方式
#include<cstdio>    //C++可以在前面加入C 表示C中的标准输入输出头文件,并且不用加.h
#include<iostream>  //C++的标准输入输出头文件 

 命名空间的引入

在C语言中 相同作用域下是不允许出现相同标识符

但是C++ 用命名空间是允许相同标识符的存在

命名空间的使用:

namespace fox
{
    int a;
    int b;
}
namespace fox2
{
    int a;
    int b;
}
int a2=12;//该为全局变量

int  main()
{
   int a2=0;//该为局部变量
   std::cout<<a2<<std::endl;//按照就近原则 它会使用局部变量的值
   std::cout<<::a2<<std::endl;//用::标识为全局变量 它会使用全局变量的值
   fox1::a=2;
   fox::a=40;

}

这样即使在相同作用域下也可以存在相同的标识符

注意点:  ::这个是作用域分辨符  它可以用来访问命名空间内的东西,也可以告知编译器

该标识符来自与哪一个命名空间内 (它还可以用来标识全局变量)

2.using 语法的引入

   using 语法用于省略前缀

  C++的输出用 std::cout  输入用std::cin

  不加using 要标识它是那个 cout 或者cin 是哪一个类里面成员

  注意点1:using语法有作用域 ,所以一般写在最上面,方便不用写前缀

  注意点2:using语法可以配合命名空间的使用,方便不用标识空间名


namespace fox
{

 int a ;
 int b ;
}
int main()
{
 
 fox::a=20;
 using namespace fox;
 a=1000;
 std::cout<<a<<std::endl;//没加之前
 using namespace std;  //注意作用域范围
 cout<<a<<endl; //加了
 return 0;
}//离开该大括号内   using namespace std;作用域失效

使用using 之后要注意不要出现二义性

namespace fox
{
  int a=23;
}
 namespace fox2
{
  int a=25;
}
using namespace fox;
using namespace fox2;

int main()
{
//错误写法:
a=5;//此处产生了二义性 由于都用using省略空间名 ,编译器无法识别使用那一个空间内的标识符

//正确写法:
fox::a=100;//自己告诉编译器使用谁就好


return 0;
}

3.bool 类型

 C++内有一个新的类型是 bool 类型

 它只占用一个字节 ,它的输出只有 0(false)和1(true)

充当返回值或者开关使用。。。

4. &  引用  理解为起别名

左值引用

namespace fox
{
	int a = 23;
}

using namespace fox;
using namespace std;


int main()
{
	int& b2 = a; //相当于给fox内的a起了别名
	b2 = 100;   //操作b2相当于操作a
	cout << a << endl;//a为100
}

常引用 const 

using namespace std;


int main()
{
	int a = 100;
	int b = 200;
	const int& x = a;
	//const int& x = 200;
	//x= 300;  不可以被修改,只读模式
	cout << a << endl;


}

右值引用   &&

using namespace std;


int main()
{
	int a = 100;
	int&& x = 100; //右值引用
	x += 100086;   //提供可以修改的接口
	cout << x << endl; //x==100186
}

4.auto 类型


using namespace std;


int main()
{
	auto a = 100;//自动推断为 int类型
   //auto a;//错误写法,必须有数据类型赋值才能推断
   
}

 可以推断函数指针 超级好用的

 装杯就用函数指针,不想装杯就用auto

4.C++函数思想

内敛思想 inline 

多次调用短小重复的函数 可以用inline标识

它会在编译过程中将标识inline直接使用二进制存储,牺牲空间提高运行的速度 

inline void printf()
{

printf("123");
}
int main()
{
printf();

return 0;
}

函数重载思想

C语言不允许同名函数存在 C++可以存在

但必须遵守以下规则

函数参数个数不同

int print(int a,int b)
{

}
int print(int a) //函数参数个数不同
{


}

函数参数类型不同

int print(int a,int b)
{

}
int print(char a,int b) //函数类型不同
{


}

函数参数顺序不同

int print(int a , char b)
{

}
int print(char a,int b) //函数参数顺序不同
{


}

函数缺省思想

int sun(int a,int b,int c.int d)
{


  return a+b+c+d;
}
给函数参数初始化缺省,就是当没有参数传入时,使用默认值
int sun(int a,int b=0,int c=1.int d=2)
{


  return a+0+1+2;//当bcd没有参数的时候,应当是这样
}

注意点:

函数缺省必须重右往左

int sun(int a,int b=1,int c.int d=0)//为错误写法,必须从右到左依次缺省
{


  return a+b+c+d;  
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值