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的区别的主要内容,如果未能解决你的问题,请参考以下文章