C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)

简介: C++入门(头文件,命名空间,作用域,输入输出流,引用,缺省参数,函数重载)



一,头文件

C++的头文件与C是有差距的,C的头文件是#include<stdio.h>,而C++是#include<iostream>,两个文件地位作用差不多,原来C中的头文件像:#include<math.h>,#include<stdlib.h>,在C++中是#include<cmath>,#include<cstdlib>,当然也有C++中有#include<string>文件,可以使用C++的字符串,以后我们会明白,这个很方便。

二,命名空间

可能很多初学者,都会莫名奇妙的敲这样的一段代码

using namespace std;

这段代码是什么意思呢?现在我来给大家解释。首先我们要明白命名空间是什么,我们可以理解命名空间是一个与其他的空间隔离开来的一块空间,里面可以有C++的库函数,也可能有我们自己创建的变量,函数,这样做的原因是为了避免当我们不使用库函数时命名与库函数的冲突,或者大型项目之中与其他程序员的代码命名冲突,相当于独立包装起来了,我们使用时需要解开包装,上面这段代码就是解开包装,但是这个太粗暴了,一下子就拿出了这个包装里面所有的东西,那我们如何单独拿出我们想要的呢?看下面代码

//我们先自己创建一个命名空间
namespace xhk{
int a=10;
int b=20;
int add(int x,int y){
return x+y;
}
}
//解开包装里所有的东西
using namespace xhk;
//只解开我们需要的东西变量a
using xhk::a;

当然我们也有其他的办法去拿到这些数据,但是稍微麻烦一些,在下一个内容作用域

三,作用域

C++相对于C有一个很大的优势就是包装特别是大型的程序开发中,在C++中有很多东西是包装起来的,像命名空间的包装作用,我们想要使用它们我们需要做一些表明使用来源的声明,而作用域声明符就是用来标明出处的特殊符号————“::”,那作用域声明符怎么用呢?在  :: 后面是我们要使用的东西,而  :: 前面是它的来源。举个例子

std::strlen(s);

四,输入输出流

C++的输入输出于C是不同的,但是C++中是可以使用C的输入输出,但是要包括C的头文件,我们这里讲C++的输入输出。

输出:  cout

使用例子

cout<<"ABC"<<endl<<"DEF";      //endl代表换行,"\n"也可以达到相同作用
//效果
输出: ABC
      DEF

输入:  cin

使用例子

int a;
//输入
cin>>a;
//输出
cout<<a<<endl;

五:引用

在C中,我们有时不得不使用指针,像函数传参但要改变原参数的值,这是因为传参传的是临时拷贝,并不是原参数。在C++中加入了引用,引用类似于指针,但是使用简单,效果类似于起别名,但是使用要注意,类型要匹配,而且使用时要初始化,并且不可以改变指向,可以多层嵌套。

int a=10;
//使用引用
int& b=a; //b是a的别名
b=0;
cout<<a<<endl;
//输出
0

六,缺省参数

在C++函数中是支持缺省参数的,那么缺省参数是什么呢?假设有一个Add函数,函数有两个参数,有时候我们可以不传参数过去,它就会使用你提前定好的默认参数,我们先看具体的例子

int Add(int x =0 ,int y =0){
return x+y;
}
Add(2,3);  //结果是5
Add(2);    //结果是2
Add();      //结果是0

但是缺省参数的使用是有限制的,缺省参数从左边第一个缺省参数开始,右边的都必须是缺省参数,不能在一群参数中间夹一个缺省参数

七,函数重载

我们都知道在C语言中函数的名称是不可以相同的,但是我们有时需要一个函数面对不同的情况做出不同的反应操作怎么办呢?在C++中给出了函数重载来解决,不过函数重载是有要求的,必须参数不同,可以是缺省参数,也可以参数类型,个数,类型顺序不同。(但重载的坑很多,有些情况可能会出现二义性导致程序崩溃)接下来看正确的函数重载例子

int Add(int x,int y){
return x+y;
}
double Add(double x,int y){
return x+y;
}
double Add(double x,double y){
return x+y;
}
int Add(int x=0,int y=0){
return 0;
}
目录
打赏
0
0
0
0
10
分享
相关文章
C++入门基础2
本内容主要讲解C++中的引用、inline函数和nullptr。引用是变量的别名,与原变量共享内存,定义时需初始化且不可更改指向对象,适用于传参和返回值以提高效率;const引用可增强代码灵活性。Inline函数通过展开提高效率,但是否展开由编译器决定,不建议分离声明与定义。Nullptr用于指针赋空,取代C语言中的NULL。最后鼓励持续学习,精进技能,提升竞争力。
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
【C++进阶】特殊类设计 && 单例模式
通过对特殊类设计和单例模式的深入探讨,我们可以更好地设计和实现复杂的C++程序。特殊类设计提高了代码的安全性和可维护性,而单例模式则确保类的唯一实例性和全局访问性。理解并掌握这些高级设计技巧,对于提升C++编程水平至关重要。
45 16
类和对象(中 )C++
本文详细讲解了C++中的默认成员函数,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载和取地址运算符重载等内容。重点分析了各函数的特点、使用场景及相互关系,如构造函数的主要任务是初始化对象,而非创建空间;析构函数用于清理资源;拷贝构造与赋值运算符的区别在于前者用于创建新对象,后者用于已存在的对象赋值。同时,文章还探讨了运算符重载的规则及其应用场景,并通过实例加深理解。最后强调,若类中存在资源管理,需显式定义拷贝构造和赋值运算符以避免浅拷贝问题。
类和对象(上)(C++)
本篇内容主要讲解了C++中类的相关知识,包括类的定义、实例化及this指针的作用。详细说明了类的定义格式、成员函数默认为inline、访问限定符(public、protected、private)的使用规则,以及class与struct的区别。同时分析了类实例化的概念,对象大小的计算规则和内存对齐原则。最后介绍了this指针的工作机制,解释了成员函数如何通过隐含的this指针区分不同对象的数据。这些知识点帮助我们更好地理解C++中类的封装性和对象的实现原理。
|
28天前
|
【c++】继承(继承的定义格式、赋值兼容转换、多继承、派生类默认成员函数规则、继承与友元、继承与静态成员)
本文深入探讨了C++中的继承机制,作为面向对象编程(OOP)的核心特性之一。继承通过允许派生类扩展基类的属性和方法,极大促进了代码复用,增强了代码的可维护性和可扩展性。文章详细介绍了继承的基本概念、定义格式、继承方式(public、protected、private)、赋值兼容转换、作用域问题、默认成员函数规则、继承与友元、静态成员、多继承及菱形继承问题,并对比了继承与组合的优缺点。最后总结指出,虽然继承提高了代码灵活性和复用率,但也带来了耦合度高的问题,建议在“has-a”和“is-a”关系同时存在时优先使用组合。
86 6
类和对象(下)C++
本内容主要讲解C++中的初始化列表、类型转换、静态成员、友元、内部类、匿名对象及对象拷贝时的编译器优化。初始化列表用于成员变量定义初始化,尤其对引用、const及无默认构造函数的类类型变量至关重要。类型转换中,`explicit`可禁用隐式转换。静态成员属类而非对象,受访问限定符约束。内部类是独立类,可增强封装性。匿名对象生命周期短,常用于临时场景。编译器会优化对象拷贝以提高效率。最后,鼓励大家通过重复练习提升技能!
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等