首页 > 编程语言 >C++入门知识

C++入门知识

时间:2024-07-09 14:30:20浏览次数:15  
标签:rand zym 入门 int 知识 namespace C++ 引用 include

1.命名空间

1.1命名空间的概念

在c/c++中,变量,函数,以及类都是大量存在的,这些变量,函数和类的名字会存在全局作用域中,会导致名字重复的问题。使用命名空间的目的是对标识符的名称进行本地化,以避免名字冲突或者名字污染,namespace关键字出现就是针对这种问题。

例子:

可以打印出rand的值

#include<stdio.h>

int rand = 10;

int main()
{
	printf("%d ", rand);
	return 0;
}

这里加了一个头文件就出现了名字重复了,因为头文件在运行时会打开头文件,里面的函数或者其它的与rand的名字一样,就会报错。

#include<stdio.h>
#include<stdlib.h>
int rand = 10;

int main()
{
	printf("%d ", rand);
	return 0;
}

1.2命名空间的定义

定义命名空间,需要用到namespace关键字,后面跟命名空间的名字,然后接一对{}就可以了,{}了面就是命名空间的成员。

定义一个命名空间zym,::是一个域作用符,zym::rand表示去zym这个命名空间找这个空间里面的rand去打印,若不加zym则就是到全局作用域去找,命名空间有自己单独的一个域

#include<stdio.h>
#include<stdlib.h>

namespace zym
{
	int rand = 10;
}


int main()
{
	printf("%d ", zym::rand);
	return 0;
}

 1.3命名空间可以放多类型

namespace zym
{
	int rand = 10;
	int Add(int left, int right)
	{
		return left + right;
	}
	struct Node
	{
		int val;
		struct Node* next;
	};
}


int main()
{
	printf("%d ", zym::rand);
	return 0;
}

 1.4命名空间可以嵌套

在大的命名空间中有俩个小的命名空间,每个空间的rand的值都是不一样的,可以通过访问不同的命名空间得到不同的rand值。

#include<stdio.h>
#include<stdlib.h>

namespace zym
{
	namespace zym1
	{
		int rand = 10;
	}

	namespace zym2
	{
		int rand = 1;
	}
}

int main()
{
	printf("%d ", zym::zym1::rand);
	printf("%d ", zym::zym2::rand);
	return 0;
}

1.5如何使用命名空间

1.5.1加命名空间名称及作用限定符

namespace zym
{
	int rand = 10;
}


int main()
{
	printf("%d ", zym::rand);
	return 0;
}

1.5.2使用using将命名空间某个成员引入

#include<stdio.h>
#include<stdlib.h>
namespace zym
{
	int a = 10;
}
using zym::a;

int main()
{
	printf("%d ",a);

	return 0;
}

1.5.3使用using将命名空间名称引入

#include<stdio.h>
#include<stdlib.h>
namespace zym
{
	int a = 10;
	int b = 2;
}
//using zym::a;
using namespace zym;

int main()
{
	printf("%d ",a);
	printf("%d ", b);

	return 0;
}

2.c++输入和输出

#include<iostream>
using namespace std;


int main()
{
	
	cout << "Hello World" << endl;
	return 0;
}

1.使用cout标准输出对象(输出到控制台)和cin标准输入对象(键盘)时,必须包含<iostream>头文件以及要打开std。

2.cout和cin是全局的流对象,endl是特殊的c++符号,表示换行输出,都包含在<iostream>头文件中。

3. <<是流插入运算符 ,    >>是流提取运算符

4.使用c++输入输出更方便,不需要像printf和scanf一样输入输出时要手动控制格式(int要%d)。

5.cout是ostream类的对象,cin是istream类型的对象。

定义三个变量,输入时不用格式,会自动识别变量的类型

#include<iostream>
using namespace std;


int main()
{
	int a;
	double b;
	char c;

	cin >> a >> b >> c;
	cout << a <<" " << b <<" " << c << endl;
	return 0;
}

3.缺省参数

3.1缺省参数概念

缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用函数时,如果没有指定实参则采用该形参的缺省值,如果有参数就用传的实参。

#include<iostream>
using namespace std;

void Fun(int a = 1)
{
	cout << a << endl;
}
int main()
{
	Fun();
	Fun(2);
	return 0;
}

若没有实参则就用参数的默认值,第一个函数没有传所以a=1,第二个有实参,所以a=2

3.2缺省参数的分类

1.全缺省参数

void Fun(int a = 1, int b = 2,int c=3)
{
	cout << a << b << c << endl;
}

2.半缺省参数

void Fun1(int a, int b = 1, int c = 2)
{
	cout << a << b << c << endl;
}

注意:

1.半缺省参数必须从右往左依次,不能间隔的设置

2.缺省参数不能在函数声明和定义中同时出现(就是头文件设置就行,函数实现处不用写)

3.缺省值必须是常量或者全局变量

4.函数重载

4.1函数重载的概念

函数重载:是函数的一种特殊情况,c++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数或类型或类型顺序)不同,常用来处理实现功能类似数据类型不同的问题。

1.参数类型不同

#include<iostream>
using namespace std;

void Add(int a, int b)
{
	int c = a + b;
	cout << c << endl;
}
void Add(double a, double b)
{
	double c = a + b;
	cout << c << endl;
}
int main()
{
	Add(1, 2);
	Add(1.1, 2.2);
	return 0;
}

 2.参数个数不同

#include<iostream>
using namespace std;

void Fun()
{
	cout << 1 << endl;
}
void Fun(int a = 1)
{
	cout << a << endl;
}
int main()
{
	Fun(11);
	return 0;
}

 需要注意的是若俩个函数名一样,一个无参数,一个是缺省参数,要是调用函数时没有参数,则会报错,因为不知道是哪一个函数。

3.参数类型顺序不同

#include<iostream>
using namespace std;

void A(int a, char b)
{
	cout <<"int a char b" << endl;
}
void A(char a, int b)
{
	cout << "char a int b" << endl;
}
int main()
{
	A(1, 'b');
	A('a', 2);
	return 0;
}

 5.引用

5.1引用的概念

引用不是新定义一个变量,而是个已经存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用一块内存空间。

就像爷爷叫孙子和爸爸叫儿子,儿子和孙子都是一个人

类型 + & +变量名字 = 引用实体

#include<iostream>
using namespace std;


int main()
{
	int a = 10;
	int& ra = a;
	cout << a << ra << endl;
	return 0;
}

注意:引用类型和引用实体是同种类型

5.2引用特性

1. 引用在定义时必须初始化

2.一个变量可以有多个引用

3.引用一旦引用一个实体,就不能引用其他实体

5.3常引用

a为常量

 

5.4 引用和指针的区别

在语法概念上引用就是一个别名,没有独立空间,和其引用实体共用一块空间。

但在底层实现上是有空间的,因为引用是按照指针方式来实现的。

引用和指针的不同点:

1.引用概念上定义一个别名,指针存储一个变量地址。

2.引用在定义上必须初始化,指针没有要求

3.引用在初始化时引用一个实体后,就不能引用其它实体,而指针可以指向一个再换成另一个同类型的实体。

4.没有NULL引用,指针可以

5.在sizeof中含义不同,引用结果为引用类型的大小,当指针始终是地址空间所占字节个数(一般为4个字节)

6.引用自加就是引用实体加一(引用加1实体也会加一,一起改变),指针自加就是向后偏移一个类型的大小

7.有多级指针但是没有多级引用

8.引用比指针使用起来更安全

标签:rand,zym,入门,int,知识,namespace,C++,引用,include
From: https://blog.csdn.net/2302_80378107/article/details/140290618

相关文章

  • c++实战-多子棋
    自创的游戏,可以控制棋盘大小之类的核心在于控制胜利条件,需要每次扫描代码如下:#include<iostream>#include<vector>usingnamespacestd;#defineMAX_SIZE9//定义棋盘为MAX_SIZExMAX_SIZE的二维向量vector<vector<char>>board(MAX_SIZE,vector<char>(MAX_SIZE......
  • c++临时对象导致的生命周期问题
    对象的生命周期是c++中非常重要的概念,它直接决定了你的程序是否正确以及是否存在安全问题。今天要说的临时变量导致的生命周期问题是非常常见的,很多时候没有一定经验甚至没法识别出来。光是我自己写、review、回答别人的问题就犯了或者看到了许许多多这类问题,所以我想有必要做个......
  • 黑客入门教程(非常详细)从零基础入门到精通,看完这一篇就够了
    前言想要成为黑客,却苦于没有方向,不知道从何学起,下面这篇黑客入门教程可以帮你实现自己的黑客梦想,如果想学,可以继续看下去,文章有点长,希望你可以耐心看到最后首先咱们聊聊,学习网络安全方向通常会有哪些问题1、打基础时间太长学基础花费很长时间,光语言都有几门,有些人会倒......
  • php函数入门学习(date&time&strtotime)
    1.date()date()函数是PHP中用于格式化日期和时间的一个非常常用的函数。它可以根据指定的格式字符串返回当前时间或指定时间的日期和时间。 基本语法:stringdate(string$format[,int$timestamp=time()])-`$format`:一个格式化字符串,定义了输出的日期和时间的......
  • 【产品经理修炼之道】-产品经理入门经验总结
    想做好产品经理这一岗位首先需要有产品经理的自我定位,其次需要做好整个项目流程的工作;当然,如何高效沟通是产品经理非常重要的一个工作技能,对工作效率有非常大的影响。接下来,让我们看看作者是如何做的吧~刚刚接触产品经理的同学,或多或少都会因未知产生恐惧和迷茫,所以需要提前......
  • C++-时间复杂度
    前言    OJ测试中最烦人的结果莫过于TLE(TimeLimitExceed 超时)和MLE(MempryLimitExceed超内存)了,在递归和搜索题里面看见这两货就烦。目录前言时间复杂度         时间复杂度概念时间复杂度的表示法        时间复杂度OJ测试要求   ......
  • 深度学习入门:基于Python的理论与实现 (斋藤康毅)
    PDF:访问python33深度学习基础:介绍深度学习的基本概念、原理和发展历史。Python编程:提供使用Python进行深度学习实现的基础知识,包括必要的编程技能和工具。神经网络:解释神经网络的基本结构和工作原理,以及如何构建和训练简单的神经网络。深度学习框架:探讨流行的深度学习......
  • 基于SpringBoot的酒店订房系统+82159(免费领源码)可做计算机毕业设计JAVA、PHP、爬虫、A
    springboot酒店订房系统摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,酒店订房系统当然也不能排除在外。酒店订房系统是以实际运用为开发背景,运用软件工程开发方法,采用springboot技术构建的一个管理系统......
  • 系统架构设计师教程 第二章 计算机系统基础知识-2.3计算机软件
    系统架构设计师教程第二章计算机系统基础知识-2.3计算机软件2.3计算机软件2.3.1计算机软件概述2.3.2操作系统2.3.2.1操作系统的组成2.3.2.2操作系统的作用2.3.2.3操作系统的特征2.3.2.4操作系统的分类2.3.3数据库2.3.3.1关系数据库2.3.3......
  • Linux 基础知识
    Smiling&Weeping----站在这,难免被遗忘    Linux基础命令这一部分我会带着大家了解Linux的一些基础操作,还有使用一些工具。让大家能够在遇到问题的时候,可以自行解决,如果大家有遇到什么问题的话,也可以在这里评论,我会及时给......