重生之我要学C++第一天

这篇具有很好参考价值的文章主要介绍了重生之我要学C++第一天。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我重生了,今天开始带着上世纪的回忆重新学习C++

目录

命名空间(namespace)

输入输出流

缺省参数(默认参数)

函数重载


命名空间(namespace)

新定义命名空间是C++为防止对变量,函数,类命名冲突而提出的新的解决措施。是在全局作用域之外的自己定义的属于命名空间自己的 特定域范围。每一个域范围互不干扰,界限分明。使用时可以避免命名冲突

#include<iostream>
using namespace std;
namespace myspace
{
    int a=20;//这个a在命名空间中
    void func()//这个函数在命名空间中
    {
        cout<<"is my func"<<endl;
    }
}
int a=10;//这个a在全局作用域中
void func()//此函数在全局作用域中
{
    cout<<"is your func"<<endl;
}
int main()
{
    cout<<a<<endl;
    func();
    return 0;
}

上图的输出结果是

重生之我要学C++第一天,重生之C++启程,c++,开发语言

 由此我们可以看出:全局作用域和命名空间互不干扰,界限分明。默认使用的是全局作用域的变量、函数、类。

那么如何使用命名空间内的变量、函数、类?

命名空间的使用分为三种:1.命名空间全部展开        2.命名空间部分展开        3.指定使用

下面依次说明:

命名空间的全部展开:是直接将命名空间内的变量、函数、类展开到全局作用域范围,使得全局范围的代码可以直接使用命名空间内定义的内容。但是这种方式比较危险,容易和原全局作用域范围内的变量、函数、类名相同,造成矛盾。

#include<iostream>
using namespace std;
namespace myspace
{
    int a = 20;//这个a在命名空间中
    void func()//这个函数在命名空间中
    {
        cout << "is my func" << endl;
    }
}
using namespace myspace;//全部展开方式:using+namespace+命名空间名
int main()
{
    cout << a << endl;//使用的是命名空间的变量和函数
    func();
    return 0;
}

冲突: 如果全局作用域内和命名空间内有相同的变量、函数、类名就不能直接全部展开,否则会出现名字相同的矛盾。

命名空间的部分展开:命名空间的部分展开是将命名空间内的某个变量、函数、类暴露到全局作用域范围。从而使用命名空间。

#include<iostream>
using namespace std;
namespace myspace
{
    int a = 20;//这个a在命名空间中
    void func()//这个函数在命名空间中
    {
        cout << "is my func" << endl;
    }
}
using myspace::a;//部分展开规则:using+命名空间名+::+要使用的变量或函数或类
int main()
{
    cout << a << endl;//这里只能访问到a,不能访问到func()
    return 0;
}

命名空间的指定使用:命名空间的指定使用是不展开命名空间内的任何变量、函数、类。在要使用的地方直接指定使用,要在每一个使用的地方指定。这种方法最繁琐,但是却最安全,没有重名的隐患。 

#include<iostream>
using namespace std;
namespace myspace
{
    int a = 20;//这个a在命名空间中
    void func()//这个函数在命名空间中
    {
        cout << "is my func" << endl;
    }
}
int main()
{
    cout << myspace::a << endl;//指定使用规则:指定的命名空间名+::+变量或函数或类
    myspace::func();
    return 0;
}

命名空间的自动合并

在两个不同文件的两个命名空间,或者同一文件的两个命名空间,如果这两个命名空间的名字相同,命名空间内部将会自动合并。

例如,在一个最简单的C++程序中,

#include<iostream>
#include<stdlib.h>
using namespace std;//合并后共有的std标准命名空间全部展开
int main()
{
    cout<<"hello world"<<endl;
    return 0;
}

这里包含了两个头文件,但是他们内部都共有std这个标准命名空间。他们两个各自的std命名空间就会合并为一个共有的命名空间std。

如何合理应用std?

日常练习中,直接using namespace std将标准命名空间全部展开即可。但是在大型项目中,要谨慎展开,防止std中的名字与项目内的其他全局变量、函数、类名相同。

输入输出流

这里只介绍最基本的C++输入输出

#include<iostream>
using namespace std;
int main()
{
	int a = 0;
	char ch;
	cout << "请输入a" << endl;
	cin >> a;
	cout<< "请输入ch" << endl;
	cin >> ch;
	cout << "a=" <<a << endl;
	cout << "ch=" << ch << endl;
	
	return 0;
}
说明:
1. 使用 cout 标准输出对象 (console out控制台输出 ) cin 标准输入对象 (console in控制台输入 ) 时,必须 包含 < iostream > 头文件,以及按命名空间使用方法使用std(标准命名空间)。
2. cout cin 是全局的流对象, endl 是特殊的 C++ 符号,表示换行输出,他们都包含在包含 <
iostream > 头文件中。
3. << 是流插入运算符, >> 是流提取运算符
4. 使用 C++ 输入输出更方便,不需要像 printf/scanf 输入输出时那样,需要手动控制格式。
C++ 的输入输出可以自动识别变量类型。
5. 实际上 cout cin 分别是 ostream istream 类型的对象, >> << 也涉及运算符重载等知识。 

缺省参数(默认参数)

缺省参数是 声明或定义函数时 为函数的 参数指定一个缺省值 。在调用该函数时,如果没有指定实
参则采用该形参的缺省值,否则使用指定的实参。如下
#include<iostream>
using namespace std;
void func(int x=2)
{
    cout<<x<<endl;
}
int main()
{
    func();//没有指定实参,使用缺省值2
    func(1);//指定实参则使用指定实参
    return 0;
}

 重生之我要学C++第一天,重生之C++启程,c++,开发语言

全缺省与半缺省

全缺省:函数参数全部为缺省参数。半缺省:函数部分参数为缺省参数。

注意: 

1. 半缺省参数必须 从右往左依次 来给出,不能间隔着给。
void Func(int a, int b = 10, int c = 20)
 {
     cout<<"a = "<<a<<endl;
     cout<<"b = "<<b<<endl;
     cout<<"c = "<<c<<endl;
 }
2. 缺省参数不能在函数声明和定义中同时出现。声明给,定义就不能给。
#include<iostream>
using namespace std;
void func(int x = 2);//函数声明已给缺省参数
void func(int x)//函数定义,这里不可以是缺省参数(int x=2)
{
    cout << x << endl;
}
int main()
{
    func();
    func(1);
    return 0;
}

函数重载

函数重载: 是函数的一种特殊情况, C++ 允许在 同一作用域中 声明几个功能类似 的同名函数 ,这
些同名函数的 形参列表 ( 参数个数 或 类型 或 类型顺序 ) 不同 ,常用来处理实现功能类似数据类型
不同的问题。
1.参数个数不同:
#include<iostream>
using namespace std;
void func()
{
    cout << "null" << endl;
}
void func(int x)
{
    cout << x << endl;
}
int main()
{
    func();//调用无参func
    func(1);//调用有参func
    return 0;
}

重生之我要学C++第一天,重生之C++启程,c++,开发语言

2.参数类型不同

#include<iostream>
using namespace std;
void swap(int* a,int* b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}
void swap(char* a, char* b)
{
    char tmp = *a;
    *a = *b;
    *b = tmp;
}
int main()
{
    int a = 2, b = 3;
    char c = 'j', d = 'k';
    swap(a, b);//调用int,int的swap
    swap(c, d);//调用char,char的swap
    cout << "a=" << a << " "<< "b=" << b << endl;
    cout << "c=" << c <<" " << "d=" << d << endl;
    return 0;
}

重生之我要学C++第一天,重生之C++启程,c++,开发语言

 3.类型顺序不同

#include<iostream>
using namespace std;
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
int main()
{
	f(2, 'a');//调用int char的f函数
	f('a', 2);//调用char int的f函数
	return 0;
}

重生之我要学C++第一天,重生之C++启程,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-621370.html

到了这里,关于重生之我要学C++第一天的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 重生之我要学C++第七天(匿名对象、内部类)

    这篇文章主要内容是构造函数的隐式类型转化、匿名对象、内部类。希望对大家有所帮助。 更多优质内容跳转: ​​​​​​专栏:重生之C++启程(文章平均质量分93) 目录 构造函数的隐式类型转化 1.单参数构造函数隐式类型转换 2.多参数构造函数隐式类型转换 匿名对象 内部

    2024年02月13日
    浏览(27)
  • 重生之我要学C++第六天(const,static,友元)

    这篇文章的主要内容是const以及权限问题、static、友元函数和友元类,希望对大家有所帮助,点赞收藏评论支持一下吧! 更多优质内容跳转: 专栏:重生之C++启程(文章平均质量分93) 目录   const以及权限问题 1.const修饰内置类型 (1).const修饰普通变量 (2).const修饰指针变量

    2024年02月14日
    浏览(25)
  • 快速入门vb语言——第一天

    什么是VB编程语言 VB的应用场景 VB的编辑器——Visual Basic 我的第一个VB程序——Hello,World VB语言是一门面向对象的编程语言,它具有模块化、结构化等特点。它与其他的编程语言最大的特别是它自带UI界面,非常适合新手入门计算机的世界。vb语言还衍生出了VBA、VBS以及vb.net语

    2024年02月05日
    浏览(29)
  • 学习C语言的第一天

    使用工具:visual studio 2010 搭建过程:新建项目、配置设置(主要是解决运行后一闪而过的问题)   如何输出各种数据类型?  学习字节以及一些常用基本单位:  搞懂十进制和二进制如何计算?  从以上内容,我们可以得出:如果我使用的是int类型,那么将有32个bit,也就是

    2023年04月18日
    浏览(53)
  • 七天学会C语言-第一天(C语言基本语句)

    这个是C程序的基本框架,需要记住!!! 简单输出一句C程序: 运行结果: 例 2: 运行结果: 例 3:使用\\\"t\\\" 代码编写: 运行结果: 例 4:请编写一个C程序,输出以下信息: 代码编写: 运行结果: C语言中有多种数据类型,用于存储不同类型的数据 int(整数) int  用于

    2024年02月08日
    浏览(35)
  • 鸿蒙开发第一天

    一、开发准备工作 1、开发工具的安装 1)下载地址:https://developer.huawei.com/consumer/cn/deveco-studio/ 2)查询API文档链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V2/syscap-0000001408089368-V2 二、ArkTS语言 1、ArkTS语言特点主打一个:开发效率高,开发体验好 2、TypeScript语法学习

    2024年02月03日
    浏览(32)
  • 拒绝摆烂!C语言练习打卡第一天

      🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 🗒️前言: 在前面我们学习完C语言的所以知识,当然练习巩固也不能落下。俗话说:“ 无财之谓贫,学而不能行之谓病 。”可见实践对我们学习的

    2024年02月13日
    浏览(38)
  • 初学unity开发学习笔记----第一天

    以下是学习unity知识的心得,类似备忘录,肯定是存在有漏洞的地方或者专业名词使用不恰当的地方。。。 目标:编写小球wasd移动的效果 1.下载unity hub和unity引擎: (1).前往官网:Unity实时内容开发平台 -实时3D引擎、2D、VRAR可视化数据 | Unity中国官网 (2).选择unity选项卡,选择下载

    2024年02月09日
    浏览(32)
  • 十四天学会C++之第一天(入门和基本语法)

    C++诞生于20世纪80年代初,它的创造者是计算机科学家Bjarne Stroustrup。当时,Stroustrup在贝尔实验室工作,他希望为C语言添加一些功能,以便更好地支持系统开发。这个愿望促使他创建了C++。 C++的名字来源于它的基因,其中的\\\"C\\\"代表了C语言,而\\\"++\\\"表示C语言的一个增强版本。这

    2024年02月07日
    浏览(41)
  • python版《羊了个羊》游戏开发第一天

    Python小型项目实战教学课《羊了个羊》 版本1.0:基本开发 课次 内容 技术 第一天 基本游戏地图数据 面向过程 第二天 鼠标点击和移动 面向对象 第三天 消除 设计模式:单例模式 第四天 完整游戏过程 架构:Model-View-ViewModel 第五天 多层重叠的方块 数据结构 (计算机考研数据

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包