C++与C的区别

Posted 皓月肥波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++与C的区别相关的知识,希望对你有一定的参考价值。

C++与C的区别

头文件与命名空间

  • 创建源文件是.cpp文件,头文件不变,依旧是.h文件

  • 包含头文件的方式

    • 包含自己的头文件没有区别,#include"myHead.h"

    • 包含库目录

      • 可以是C中原来的包含方式,也可以用C++包含方式,去掉.h加个c

      • iostream C++标准输入输出流的头文件

  • 命名空间的引入

    • 命名语法

namespace 空间名
{
	表达式;
}
int main()
{
	空间名::表达式;
}

作用

  • 可以增加标识符的使用率,C语言同一个作用域下不允许定义相同的标识符

    namespace 空间名1
    {
    	int a;
    }
    namespace 空间名2
    {
    	int a;
    }

  • 空间名限定,类名限定

  • 用来标识全局变量

    int x=1;
    int main()
    {
    	int x=2;
    	printf("%d\\n",x);   //采用就近原则2
    	printf("%d\\n",::x); //全局变量1
    }

    using语法,可以省略前缀的写法

    namespace GG
    {
    	int a;
    	void printf(){}
    }
    int main()
    {
    	GG::a=10;
    	using namespace GG;
    	printf();         //此时不需要前缀GG::
    }

  • 空间名的嵌套和空间内容访问
    • 空间名中有空间名

    • 访问:剥洋葱

  • cin>>输入

  • cout<<输出

  • 在标准命名空间中

  • 基本输入输出

    #include<iostream>
    using namespace std;//不写,则std::cin>> std::cout<< std::endl

新数据类型

  • bool类型

    • 占用内存一个字节

    • 计算机非零表示成立,只有0或者指针空表示不成立

    • 一般充当函数返回值,或者开关

    • 正常输出是0和1

    • C++专有的赋值方式,false和true

  • 指针的NULL C++改为nullptr

  • 引用类型

    • 理解为起别名

    • 基本引用

类项目& 别名=要起别名的东西
int a=1;
int& b=a; //a就是b,b就是a

 常引用

第一张方法
const 类项目& 别名=右值
int aa=1;
const int& a=aa;
const int& a=1;
第二种方法
类项目&& 别名=右值      //右值引用,只能给右值取别名,而第一种方法可以给左值取别名
int&& a=1; //1就是a,a就是1

//右值引用
void printRightValue(int&& a) 
{
	a += 11;     //可以增加一个可以修改的功能
	cout << a << endl;
}
void printRight(const int& a) 
{
	//a += 11;   //常引用不能修改
	cout << a << endl;
}
int main()
{
	printRightValue(11);
    printRight(11) ;
}

引用一般用在那些地方

  • 函数参数(防止拷贝产生)

    • 普通传参不影响,引用传参可以影响值

  • 函数返回值(增加左值使用)

    • 不能返回局部变量引用

int g_num = 1001;
int getData() 
{
	return g_num;
}

int& getValue() 
{
	return g_num;
}
//返回值就是一个值,这个值只能作为右值,而返回引用可作为左值
//getData() = 1001;    错误
getValue() = 0;		  //返回引用表示返回变量本身
cout << g_num << endl;

自动推断类型auto类型: 必须根据赋值的数据推断类型,不能直接推断

	auto a = 1;             //放在a处就知道右边是什么类型
	//auto b;				//错误,auto不能定义变量
    • auto与C语言auto区别

      • C++中淘汰了C语言用法,只有自动推断用法

      • auto int a=10; //错误

函数思想

  • 内敛思想 inline关键字

    • 什么样的函数可以成为inline,短小精悍

    • 编译时候直接是二进制去做的,编译之后存在的形式是二进制形式

    • 在结构体中或者类中实现的函数默认内敛(知道即可)

  • 函数重载: C++允许同名不同参数函数存在

    • 参数数目不同

    • 参数类型不同

    • 参数顺序不同(一定建立在不同类型的基础上)

  • 函数缺省: C++中允许给函数形参初始化

    • 缺省顺序 必须从右往左缺省

    • 没有传入参数,使用的是默认值

以上是关于C++与C的区别的主要内容,如果未能解决你的问题,请参考以下文章

C++与C的区别终于说清楚了!

C++ 代码片段执行

以下代码片段 C++ 的说明

[转]G++与GCC的区别

有趣的 C++ 代码片段,有啥解释吗? [复制]

c语言和c++有啥关系