C++---入门

C++补充了上的不足,使用各方面更加便捷,在C的基础上面向对象进行编译,学过C之后,对学习C++的一定的帮助。

命名空间:

**namesp的定义:**定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量。

如上图rand会进行报错,因为rand可定义为函数,如果加上namespace则会少去该报错

C++输⼊和输出:

<iostream> 是 Input Output Stream 的缩写,是标准的输⼊、输出流库,定义了标准的输⼊、输

出对象。

std::cin 是 istream 类的对象,标准输⼊流。

std::cout 是 ostream 类的对象,标准的输出流

std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符加刷新缓冲区。

缺省函数:

缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值,也为默认值。也分为半缺省和全缺省函数。

C++规定半缺省参数必须从右往左 依次连续缺省,不能间隔跳跃给缺省值。

带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。

函数重载:

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者类型不同.这样C++函数调⽤就表现出了多态⾏为,使⽤更灵活。C语⾔是不⽀持同⼀作⽤域中出现同名函数的。

cpp 复制代码
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
// 3、参数类型顺序不同
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()
{
	int a = 0;
	double b = 0.1;
	char c = 'x';
	std::cout << a << " " << b << " " << c << std::endl;

	/*f1();
	f1(10);*/
	Add(10, 20);
	Add(10.1, 20.2);
	f();
	f(10);
	f(10, 'a');
	f('a', 10);

	return 0;
}

引用:

引⽤不是新定义⼀个变量,⽽是给已存在变量取了⼀个别名,编译器不会为引⽤变量开辟内存空间,它和它引⽤的变量共⽤同⼀块内存空间。

类型& 引⽤别名 = 引⽤对象。

cpp 复制代码
#include<iostream>
using namespace std;
int main(){
int a = 0;
// 引⽤:b和c是a的别名
int& b = a;
int& c = a;
// 也可以给别名b取别名,d相当于还是a的别名
int& d = b;
++d;
// 这⾥取地址我们看到是⼀样的
cout << &a << endl;
cout << &b << endl;
cout << &c << endl;
cout << &d << endl;
return0;
}
相关推荐
Cyanto2 分钟前
Java并发编程面试题
java·开发语言·面试
海的诗篇_9 分钟前
前端开发面试题总结-JavaScript篇(一)
开发语言·前端·javascript·学习·面试
m0_5522008214 分钟前
《UE5_C++多人TPS完整教程》学习笔记37 ——《P38 变量复制(Variable Replication)》
c++·游戏·ue5
小wanga17 分钟前
【递归、搜索与回溯】专题三 穷举vs暴搜vs回溯vs剪枝
c++·算法·机器学习·剪枝
じ☆ve 清风°18 分钟前
理解JavaScript中map和parseInt的陷阱:一个常见的面试题解析
开发语言·javascript·ecmascript
天宫风子28 分钟前
线性代数小述(一)
线性代数·算法·矩阵·抽象代数
sss191s30 分钟前
Java 集合面试题从数据结构到 HashMap 源码剖析详解及常见考点梳理
java·开发语言·数据结构
IGP936 分钟前
20250606-C#知识:委托和事件
开发语言·c#
hjyowl1 小时前
题解:AT_abc407_c [ABC407C] Security 2
c语言·开发语言·算法
唐墨1231 小时前
android与Qt类比
android·开发语言·qt