【C++开篇 -- 入门语法篇】

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

C++知识开篇

前言:
首先,C++兼容C,C++在C语言范畴上增添了一些优化,它支持多种编程范式,包括过程式编程、面向对象编程和泛型编程。C++是C语言的扩展,添加了许多新特性,如类、模板、异常处理等。接下来,随着这篇文章推开C++知识的大门吧。
/知识点汇总/

1、介绍C++的背景以及与C语言的区别

1.1、什么是C++?

C++是一种通用的、支持多重编程范式的计算机程序设计语言,它综合了高级语言和低级语言的特点。它既有高级语言的易用性,可以编写出简洁、易读的代码,同时也有低级语言的灵活性,可以直接操作内存和硬件。C++擅长面向对象程序设计,它支持类和对象的概念,可以实现封装、继承和多态等面向对象开发的四大特性。此外,C++还提供了丰富的标准库,包括STL(标准模板库)、iostream、fstream等,为程序员提供了许多常用的数据结构和算法。

1.2、C++的背景

C++诞生于1983年,由Bjarne Stroustrup在贝尔实验室开发。其初衷是创建一种语言,既具有C语言的系统级特性,又能支持面向对象编程。随着语言的成熟和扩展,C++变得越来越复杂,但其核心仍然保持了与C语言的高度兼容性。C++广泛应用于各种领域,包括操作系统、编译器、硬件驱动、游戏开发、网络编程等。

2、C++与C语言的区别

1.面向对象编程:C++支持面向对象编程,包括类、对象、继承、多态等概念。而C语言是一种过程式编程语言,不支持面向对象编程。
2.类型安全:C++是一种强类型语言,具有严格的类型检查。相比之下,C语言的类型检查较为宽松,容易导致类型错误。
3.内存管理:C++引入了自动内存管理特性,如new和delete操作符,以及智能指针等。这些特性有助于减少内存泄漏和悬挂指针等问题。C语言需要程序员手动管理内存,包括分配和释放内存。
4.异常处理:C++支持异常处理机制,可以使用try、catch和throw关键字来处理运行时错误。而C语言没有内置的异常处理机制,通常使用错误码或返回值来表示错误。
5.模板和泛型编程:C++引入了模板和泛型编程的概念,允许程序员编写与数据类型无关的代码。这使得代码更加通用和可重用。C语言不支持模板和泛型编程。
6.标准库:C++具有丰富的标准库,包括STL(标准模板库)、iostream、fstream等,提供了许多常用的数据结构和算法。而C语言的标准库相对较小,需要程序员自行实现许多常用功能。

小结:
总之,C++相对于C语言具有更多的特性和优势,使得编程更加高效、安全和可维护。然而,由于C++的复杂性,对于初学者来说,学习曲线可能较为陡峭。因此,在学习C++之前,建议先掌握C语言的基础知识。

3、C++优化命名空间

C++解决了C语言中,重复命名的问题。即,解决程序员命名和库中的命名重复。

3.1、C中的问题

起初C语言中,全局变量和局部变量命名一样时,默认执行局部变量。

#include <stdio.h>
//#include <stdlib.h>
int rand = 10;
int main()
{
	int rand = 11;
	printf("hello world\n");
	printf("rand1 = %d\n", rand);//11
	printf("rand2 = %d\n", rand);//11
	return 0;
}

C++方法一:C++现在引出 :: 域操作符
::域作用限定符

#include <stdio.h>
//#include <stdlib.h>
int rand = 10;
int main()
{
	int rand = 11;
	printf("hello world\n");
	printf("rand1 = %d\n", rand);//11
	printf("rand2 = %d\n", ::rand);//10
	//::左边不指定时,默认是全局域
	return 0;
}

C++方法二:命名空间
引出namespace关键字 — 划分独立的域
补充编译器搜索原则:

1.未指定时,先当前局部域,后全局域
2.指定时,通过::直接指定域搜索

#include <stdio.h>
namespace bit1
{
	int rand = 0;
}
namespace bit2
{
	int rand = 1;
}
int main()
{
	int rand = 11;
	printf("hello world\n");
	printf("rand1 = %d\n", bit1::rand);//0 ---指定了bit1域搜索
	printf("rand2 = %d\n", bit2::rand);//1 ---指定了bit2域搜索
	printf("rand2 = %d\n", rand);//11
	return 0;
}

另外,不仅仅是变量,还可以是函数、结构体等命名文体,都可以解决命名冲突的问题,而且namespace指定的域名可以相同,但是默认执行时会合并其内容,不过域名再相同就对解决重命名就无意义了。

#include <stdio.h>
namespace bit1
{
	int rand = 0;
	int Add(int left, int right)
	{
		return left + right;
	}
	struct Node
	{
		struct Node* next;
		int val;
	};
}
namespace bit2
{
	int rand = 1;
}
int main()
{
	int rand = 11;
	printf("hello world\n");
	printf("rand1 = %d\n", bit1::rand);//0 ---指定了bit1域搜索
	printf("rand2 = %d\n", bit2::rand);//1 ---指定了bit2域搜索
	printf("rand2 = %d\n", rand);//11
	//函数
	printf("Add():%d\n", bit1::Add(1, 2));
	//结构体
	//错误位置bit1::struct Node phead;
	struct bit1::Node phead;//bit::是指定在结构体的变量名前
	return 0;
}

3.2、命名空间的应用

通常结合using使用,作用是展开空间域

#include <stdio.h>

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

using namespace bit1;//展开bit1域,bit1内容可在工程下其它文件中。

int main()
{
	struct bit1::Node phead;
	return 0;
}
#include <iostream>
using namespace std;//std是所有C++库的命名空间
int main()
{
	//std::cout << "hello world" << std::endl;
	cout << "Hello World" << endl;
	return 0;
}

小结
命名空间关键字:namespace 常用于解决命名冲突和展开

C++中,名称(name)可以是符号常量、变量、宏、函数、结构体、枚举、类和对象等等。而在大型工程中,难免会有重名的现象;
命名空间namespace,就是C++引入的一种解决名称冲突的机制

4、总结

C语言中

需要通过人为操作符号的名称,来限制符号的作用域和链接属性来完解决名称冲突的。
比如:
1.同一个C文件中的全局变量 / 函数加一个统一的前缀进行区分,
2.通过作用域的掩蔽规则来进行覆盖(在大文件中如果出错很难发现) C文件中的全局变量和函数都是extern链接属性;
3. 可以用static将无需跨文件访问的全局变量和函数限制在内链接属性中

C++

namespace有三种使用方法:
1.使用时对符号附带命名空间的名称
2.使用前对该符号进行声明,后面直接使用该符号
3.使用前声明整个命名空间,后面直接使用该命名空间中的任何符号

三种方式:

1.指定访问:std::cout
2.展开常用访问: 常用的展开:using std::cout; using std::endl;
3.展开访问: using namespace(std慎用,适用小型项目/日常练习)

不管哪种方式,其本质是控制域,全局域和局部域
举例:文章来源地址https://www.toymoban.com/news/detail-826743.html

#include <iostream>
using std::cout;
using std::endl;
namespace bit
{
	namespace zs
	{
		void Push()
		{
			cout << "zs" << endl;
		}
	}
	namespace ls
	{
		void Push()
		{
			cout << "ls" << endl;
		}
	}
}
int main()
{
	int m = 0;
	std::cin >> m;

	for (int i = 0; i < m; i++)
	{
		cout << "hello world" << endl;
	}
	bit::zs::Push();
	bit::ls::Push();
	return 0;
}

到了这里,关于【C++开篇 -- 入门语法篇】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • C++入门:命名空间与输入输出

    目录 1.命名空间 1.1 命名空间的定义 1.2 命名空间的使用 1.3 标准命名空间 std 2.C++输入输出 我们在初学C++时,经常会在代码开头看到这样的一行代码: 这行代码到底什么意思呢?我们学完命名空间就可以理解了。 在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些

    2024年02月11日
    浏览(46)
  • 『C++成长记』C++入门——命名空间&缺省参数

     🔥 博客主页: 小王又困了 📚 系列专栏: C++ 🌟 人之为学,不日近则日退 ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、C++的认识 📒1.1什么是C++ 📒1.2C++的发展 二、C++ 三、命名空间 📒3.1为什么有命名空间 📒3.2命名空间定义 📒3.3命名空间使用 📒3.4命名空间的

    2024年02月08日
    浏览(37)
  • 【C++入门系列】——命名空间和输入输出

    📚lovewold少个r博客主页     ⚠️ 本文重点 : c++入门第一个程序和基本知识讲解 😄 每日一言 :忙,不会死,人只有越忙越活,流水不腐,户枢不蠹。 ​作者主页 前言 谈谈我个人对语言和职业的看法 C++的历史发展 C++第一个程序 命名空间 定义命名空间 使用此命名空间 命

    2024年02月05日
    浏览(45)
  • “C++基础入门指南:了解语言特性和基本语法”

    C++是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式 等。熟悉C语言之后,对C++学习有一定的帮助 工作之后,看谁的技术牛不牛逼,不用看谁写出多牛逼的代码,就代码风格扫一眼,立刻就能看出来是正规军还是野生的程序员。代码的风

    2024年02月16日
    浏览(40)
  • 【C++初阶】C++入门——C++介绍、命名空间、输入输出

     C语言是 结构化 和 模块化 的语言,适合处理 较小规模 的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,20世纪80年代,计算机界提出了 OOP (object oriented programming: 面向对象 )思想,支持面向对象的程序设计语言应

    2024年02月11日
    浏览(43)
  • C++入门 上(命名空间 缺省参数 函数重载)

    在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace的出现就是针对这种问题的。 定义命名空间

    2024年02月19日
    浏览(47)
  • 【C++学习】C++入门 | C++该怎么学 | 命名空间 | 输入输出

    欢迎来到C++的世界,这是一门令人兴奋的语言。 好吧,每当我开始阅读C++的书籍的时候,开头的第一句话必定是这个, 也不知道其他语言的编程书籍是不是这样,那就让这句话也作为我C++分享之路上的第一句话吧。 目录 写在前面 1. C++怎么学? 1. C语言 2. Object-Oriented C++ 3.

    2024年02月10日
    浏览(43)
  • C++入门(1):命名空间,IO流 输入输出,缺省参数

    一、命名空间 1.1 命名空间的作用: ​ 避免标识符命名冲突 1.2 命名空间定义: :namespace PS: 命名空间可以嵌套. 在同一工程中,编译器会把 相同名称 的命名空间 合并 成到同一个命名空间中。 1.3 命名空间的使用 一个命名空间相当于定义了一个作用域,其中的所有内

    2024年02月07日
    浏览(45)
  • 【C++心愿便利店】No.1---C++入门(命名空间、缺省参数)

    👧个人主页:@小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C++ 心愿便利店 🔑本章内容:命名空间、缺省参数 记得 评论📝 +点赞👍 +收藏😽 +关注💞哦~ C语言最初由 Dennis Ritchie 于 1969 年到 1973 年在 ATT 贝尔实验室里开发出来,主要用于重新实现 Unix 操作

    2024年02月11日
    浏览(40)
  • 刘铁猛C#语言入门详解课程听课笔记--初识类与命名空间

    类:构成程序的主体;C语言是一门面向过程的程序设计语言,所以其用函数来组织程序;C#语言是一门完全面向对象的程序设计语言,其用类来组织程序,类是构成程序的主体,任何一个方法和变量都必须隶属于某一个具体的类;而C++也是一门面向对象的程序设计语言,但是

    2024年02月13日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包