C++ 认识和了解C++

news2024/11/15 18:58:50

1.在使用C++语言写代码的时候开头要用到的是:

#include<iostream>
using namespace std;

不可以写成这样:

#include iostream.h

(1)iostream是输入输出流类,
istream输入流类 cin >>
ostream输出流类 cout <<
(2)namespace是名空间,即命名空间
namespace是为了解决词穷的问题。
比如说有一个项目,有3个模块,需要3个人,三个人都写了排序函数 sort() sort() sort(),如果在C语言中,函数名不可以重复,在C++中就可以用namespace解决这一问题

namespace AA
{
	int sum = 0;
	void sort()
	{
		cout << "AA:sort" << endl;
	}
};
namespace BB
{
	int sum = 0;
	void sort()
	{
		cout << "BB:sort" << endl;
	}
};
namespace CC
{
	int sum = 0;
	void sort()
	{
		cout << "CC:sort" << endl;
	}
};
void main()
{
	using namespace AA;
	sort();
	BB::sort();
	CC::sort();
}

运行结果:
请添加图片描述
2.C语言和C++的区别
C语言:面向过程程序设计,体现的是编程思想,用流程图来体现
C++:面向对象程序设计,体现的是类的设计,用类图来体现
C语言可以解决问题,描述问题
C++是C语言的升级,可以更加方便的描述问题
3.struct 在C和C++中的区别
(1)在C中,结构体不能为空;C++中可以,在C++中,空结构体大小为1个字节
(2)在C中,结构体名就是结构体名;在C++中,作为类型名,可以直接定义变量
(3)在C++中,结构体也需要内存对齐
(4)在C中,结构体中不允许写函数,不允许有操作;在C++中允许

struct A
{
	char a[5];
	int b;
	void print() {}   //在C++中结构体中可以有操作
};
void main()
{
	A aa;    //在C++中结构体作为类型名可以直接定义变量
	cout << sizeof(A) << endl;
}

4.struct和class的区别
(1)struct可以实现和class一样的功能
(2)struct默认为public,class默认为private

struct AA
{
	int m_a;
	void print() { cout << m_a << endl; }
};
class BB
{
	int m_a;
	void print() { cout << m_a << endl; }
};
void main()
{
	AA a;
	a.m_a = 10;
	a.print();
	BB b;
	/*b.m_a = 20;
	b.print();*/    //这是错误的操作,class默认为private,成员BB::m_a不可以访问
}

5.三种变量类型:值类型,指针类型,引用类型
指针类型和引用类型的区别
不同点:
1.指针可以不初始化,引用必须初始化
2.指针通常初始化为NULL,引用不能为空
3.sizeof(指针)为4,sizeof(引用)实体大小
4.指针可以指向其他变量,引用不能改变
5.指针可以取*,引用不能

void main()
{
	int a = 10;
	char c = '2';
	char* p = &c;  //定义一个char类型的指针,指向c
	char d = 'p';
	p = &d;    //改变指针的指向,让指针指向d
	cout << sizeof(p) << endl;
    int& b = a; //声明了引用b,是a的别名
	            //引用在声明的时候必须初始化
	//int& c = NULL;  //error  引用不可以初始化为NULL
	b = 30;   //把a的值改变为30
	cout << a << endl;
}

6.野指针不是NULL指针,是指向垃圾内存的指针
(1)野指针可能声明时候出现,比如说定义指针变量声明的时候没有初始化,指针就是野指针
(2)free或者delete之后,没有把指针赋值为NULL
7.四种swap函数

//在不同的时间里修改了不同的内存单元中的值
void swap1(int x, int y)
{
	int t = x;
	x = y;
	y = t;
}
//在不同的时间里修改了同一段内存单元中的内容
void swap2(int* x, int* y)
{
	int t = *x;
	*x = *y;//将y所指向的内存空间里面的内容赋值到x所指向的内存单元中
	*y = t;
}
void swap3(int* x, int* y)
{
	int* t = x;
	x = y;
	y = t;
}
void swap4(int& x, int& y)//x是a的别名,y是b的别名
{
	int t = x;
	x = y;
	y = t;
}
void main()
{
	int a = 10, b = 6;
	swap1(a, b);
	cout << "a  = " << a << "  b = " << b << endl;
	swap2(&a, &b);
	cout << "a  = " << a << "  b = " << b << endl;
	swap3(&a, &b);
	cout << "a  = " << a << "  b = " << b << endl;
	swap4(a, b);
	cout << "a  = " << a << "  b = " << b << endl;
}

运行结果:
请添加图片描述
8.函数重载—重载多态
(1)函数名相同,同一个作用域
(2)参数列表不同()
(3)和返回值无关,不能光通过函数返回值确定重载
(4)const函数可以区别重载

struct AA
{
	void test() { cout << "AA::test" << endl; }
	void test()const { cout << "AA::test const" << endl; }
};
/*
error 不能构成重载
int test()
{
}*/
void test()
{
	cout << "test" << endl;
}
void test(int a)
{
	cout << "test(int)" << endl;
}
void test(int a, int b)
{
	cout << "test(int,int)" << endl;
}
void test(int a, int b, int c)
{
	cout << "test(int,int,int)" << endl;
}
void main()
{
	test();
	test(1);
	test(2, 6);
	test(3, 4, 5);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

40系笔记本(可不联网激活)深度学习生产力(环境配置和简单训练测试)

40系笔记本深度学习、转码生产力&#xff08;环境配置和简单训练测试&#xff09;这里写自定义目录标题深度学习环境准备CUDA、CUDNN版本问题torch版本问题其他软件版本的安装命令训练测试代码地址关于Linux还是Windows的问题结果博主首发购买了枪神7超竞4080的版本&#xff0c…

git开发流程

分支介绍 dev&#xff1a;开发环境&#xff0c;从feature去mr test: 测试环境&#xff0c;从feature去mr pre&#xff1a; 预生产环境&#xff0c;从master去mr&#xff0c;为了验证master代码 master: 生产环境&#xff0c;从feature去mr feature&#xff1a; 开发分支----小…

4种方法教你如何隐藏电脑磁盘分区?

磁盘分区是电脑的重要组成部分&#xff0c;我们能够在电脑中保存众多数据&#xff0c;就离不开它。那么你知道该如何隐藏磁盘分区吗&#xff1f;下面小编就教你4个方法隐藏电脑磁盘分区。方法一&#xff1a;使用磁盘管理隐藏硬盘分区1、按下“WinR”键&#xff0c;输入“diskmg…

Python3-元组

Python3 元组 Python 的元组与列表类似&#xff0c;不同之处在于元组的元素不能修改。 元组使用小括号 ( )&#xff0c;列表使用方括号 [ ]。 元组创建很简单&#xff0c;只需要在括号中添加元素&#xff0c;并使用逗号隔开即可。 >>> tup1 (Google, Runoob, 19…

4-1 SpringCloud快速开发入门:RestTemplate类详细解读

RestTemplate类详细解读 RestTemplate 的 GET 请求 Get 请求可以有两种方式&#xff1a; 第一种&#xff1a;getForEntity 该方法返回一个 ResponseEntity对象&#xff0c;ResponseEntity是 Spring 对 HTTP 请求响应的封装&#xff0c;包括了几个重要的元素&#xff0c;比如响…

Python基础篇(十五)-- Pygame游戏编程

1 初识Pygame Pygame是一个开源的Python模块&#xff0c;专门用于多媒体应用&#xff08;如电子游戏&#xff09;的开发&#xff0c;其中包含对图像、声音、视频、事件、碰撞等的支持。Pygame建立在SDL的基础上&#xff0c;SDL是一套跨平台的多媒体开发库&#xff0c;用C语言实…

39万字完整版智能矿山项目建设整体解决方案

本资料来源网络&#xff0c;仅做知识分享&#xff0c;请勿商用。完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 1.1 总体技术要求 1.1.1 核心业务架构 智能矿山业务架构是在统一的标准与规范及安全运维保障体系下&#xff0c;按分层设计模式&#xff0c;分为设备层、…

QML鼠标事件

QML中常用的事件有&#xff1a; 鼠标事件键盘事件拖拽事件定时器MouseArea&#xff08;鼠标区域&#xff09; MouseArea是一个不可见的项目&#xff0c;同、通常用来和一个可见的项目配合使用来为其提供鼠标处理。鼠标处理的逻辑可以包含在MouseArea项目中 常用的属性&#xff…

【设计模式】原型模式与建造者模式

原型模式 原型模式是指通过原型实例指定创建对象的种类&#xff0c;然后通过拷贝的方式创建新的对象。属于创建型模式 原型模式的核心在于拷贝原型对象&#xff0c;主要用于对对象的复制。当你需要通过一大段get/set方法去构建对象的时候&#xff0c;就可以考虑使用原型模式了…

手牵手教Docker部署Springboot+vue ,全过程十分详细,轻松完成项目部署(简单,高效,通用)

手把手教Docker部署Springbootvue &#xff0c;详细全过程&#xff0c;轻松完成项目部署&#xff08;简单&#xff0c;高效&#xff09; 上线前准备 腾讯云的服务器&#xff0c;服务器安装好docker 和docker-compose 最好事先了解技术 nginxdocker-compose 整体编排 后端部…

【C++】Visual Studio C++ 配置并使用gtest(不好用你捶我)

文章目录 相信大家都能感受到Visual Studio C 编辑器链接 lib 或 dll文件是一件非常头疼的事情。配置gooleTest的过程也不例外。 市面上很多教程&#xff0c;要么就不全&#xff0c;要么就缺少一些细节&#xff0c;导致我自己再配置的过程中&#xff0c;踩了很多坑。今天就记录…

用不同的思路实现括号匹配(java)

给定一个只包括 (&#xff0c;) 的字符串&#xff0c;判断字符串是否有效。 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 以上就是题目要求 利用替换的思想 ()()()()()()()(())例如需要判断例子中的括号是否有效&#xff0c;用替换的思想具体就是 将字…

力扣sql简单篇练习(二十一)

力扣sql简单篇练习(二十一) 1 使用唯一标识符替换员工ID 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # Write your MySQL query statement below SELECT e2.unique_id,e1.name FROM Employees e1 LEFT JOIN EmployeeUNI e2 ON e1.ide2.id1.3 运行…

使用netlify实现自动化部署前端项目(无服务器版本)

介绍 本文以 github仓库进行介绍关联netlify的无服务前端自动化部署。用途&#xff1a;个人网站设计、小游戏等当然这只是让你入门~具体细节等待你自己去探索 实现 打开官方网站 如果没有注册过的账户&#xff0c;你需要使用 github 去进行登录。注册完成后会自动给你提示填…

有关Windows域信任关系的一系列知识

简单的总结了一下来自这篇文章的知识点 https://www.kroll.com/-/media/kroll/pdfs/publications/rootedcon2019-pentesting-active-directory-forests-carlos-garcia.pdf 视频录像为 https://www.youtube.com/watch?v6aV5tZlQ2EQ&t10s&themeRefresh1 森林 域是由树和…

项目管理的工作内容有哪些?

首先&#xff0c;什么是项目管理&#xff1f; 项目管理是为了交付项目成果&#xff0c;包括“规划&#xff08;尤其关注估算&#xff09;——实施——确保成功”。项目管理可以用在所有事情上&#xff0c;当然&#xff0c;这个定义听起来可能还不够清晰&#xff0c;但它的好处…

华为机试题:HJ91 走方格的方案数(python)

文章目录&#xff08;1&#xff09;题目描述&#xff08;2&#xff09;Python3实现&#xff08;3&#xff09;知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。1.1、input() 与 list(input()) 的区别、及其相互转换方…

剑指offer06.从尾到头打印链表

题目描述 解题思路 遍历链表&#xff0c;依次将元素压入栈中。然后依次弹出栈顶元素&#xff0c;存入数组返回。程序 class Solution { public:vector<int> reversePrint(ListNode* head) {ListNode *phead;stack<int> s1;while(p!NULL) //遍历链表&#xff0c;元…

jetson-Linux上 python 部署yolov5报错总结

第一个问题&#xff1a;python报错 illegal instruction报错先上图这报错&#xff0c;emmmmm&#xff0c;我是小白&#xff0c;多谢大佬的笔记&#xff0c;帮我解决了&#xff0c;虽然我也没搞懂。。。。嘿嘿具体解决办法就是&#xff1a;临时运行代码&#xff1a;1-在运文件前…

优雅停止 SpringBoot 服务,拒绝 kill -9 暴力停止

在使用 SpringBoot 的时候&#xff0c;都要涉及到服务的停止和启动&#xff0c;当我们停止服务的时候&#xff0c;很多时候大家都是kill -9 直接把程序进程杀掉&#xff0c;这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。 我们很多时候都需要安全的将服…