【C++】总结1

本文介绍了C++中的一些核心特性,包括命名空间的使用,如通过作用域运算符解决命名冲突,以及两种使用方式。标准输入输出流的典型应用,如cin和cout用于键盘输入和屏幕输出。引用的概念,作为弱化指针的替代,以及const引用的作用。还探讨了函数重载的原理,即编译器根据函数名和参数类型进行重命名。最后,通过示例展示了如何使用指针和引用交换两个数,并提供了运行结果。
摘要由CSDN通过智能技术生成

c与c++

c语言更多是面向过程的,c++是面向过程和面向对象的,而其中的面向对象是通过面向过程实现的
c++在c的基础上增加了新的内容,同时是完全兼容c的 。换句话说,c++是c的增强版。

c++命名空间

与C语言不同的是,C++在解决命名冲突问题时的方法有两个:
、、、
//示例代码
namespace A
{
变量a;
变量b;
}
namespace B
{
变量a;
变量b;
}
、、、
方法一:命名空间名::变量名
其中 "::"为作用域运算符
using namespace A::a
意为此时的变量 a是命名空间A里的变量a
方法二:using namespace 命名空间名; 变量
将using namespace A ;写在要使用该命名空间里变量的函数之前

标准输入输出流

操作流就是在操作文件
cin:标准输入流对象
cout:标准输出流对象

cin >> a; //通过键盘输入给a赋值
**cout << a; ** //将a的值输出到显示屏

引用

引用的目的
1弱化指针
2不会开辟空间,减少临时空间的使用
如何引用
*方法:*数据类型 & 引用名 = 变量名;
*例子:*int a=0; int &b=a;
注意
1引用时必须初始化
2访问引用就是在访问变量
const 修饰的引用
const 修饰的引用为只读,其也可以是常量的别名
目的- 防止实参被修改-
== const int &a=100 <=> #define a 100 ==
虽然作为函数的形参,但是与define作用相同

函数重载

功能类型,函数名相同,参数不同(个数和类型),与返回值无关,这样的函数就互为重载。
函数重载的原理

  • g++在编译的时候会对函数名结合参数类型和个数进行重命名,所以在函数调用时是按照重命名之后的函数名进行调用的 *
    分别gcc 和g++编译该代码由此可见,使用g++编译代码时就已经将功能函数重命名了。

** 默认参数**
函数在声明时形参可以有默认值,如果函数在调用时传参了就使用传进来的值,否则就使用默认值。
注意默认值必须从依次从右向左
例如int add(int a=0,int b=0,int c=0);
其中,a可以没有默认值,b不可以没有默认值

C++如何调用c库的函数

一个库中的函数既可以被c++程序调用,也可以被c程序调用。因此,如何告诉g++不要重命名?如何判断此时的编译器是gcc还是g++?是个问题。
规定如果是g++就打印”g++”,如果是gcc就打印”gcc”
方法1
#ifdef __cplusplus //g++
printf(“g++\n”);
#else
printf(“gcc\n”);
方法2
printf(“%d\n”, sizeof(‘a’));
//如果是gcc编译则输出4,如果是g++编译则输出1
实际使用
在这里插入图片描述

分别使用指针和引用实现两个数的交换

#include<iostream>
using namespace std;

void exchange_1(int * x,int * y)//指针交换
{
	int temp;
	temp = *x;
	*x = *y;
	*y = temp;
}
void exchange_2(int & x,int & y)//引用交换
{
	int temp;
	temp = x;
	x = y;
	y = temp;
}
int main()
{
	int x=0;
	int y=0;
	cout << "please input two numbers:" << endl;
	cin >> x >> y;
	cout << "before change: " << "x:" << x << ",y:" << y << endl;
	exchange_1(&x ,&y);
	cout << "after change_1:" << "x:" << x << ",y:" << y << endl;
	exchange_2(x , y);
	cout << "after change_2:" << "x:" << x << ",y:" << y << endl;
	return 0;
}

运行结果
结果俩数交换成功

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值