【C++】初步认识C++

C_GUIQU 2024-07-13 10:05:05 阅读 77

1. 初识C++1.1 C++概念相关1.2 C++发展史及其重要性1.2.1 发展史1.2.2 重要性

2. C++关键字3. 命名空间4. 输入和输出

在这里插入图片描述

在这里插入图片描述

个人主页:C_GUIQU

归属专栏:【C++学习】

1. 初识C++

1.1 C++概念相关

C语言是结构化和模块化的语言,适合处理较小规模的程序。

【来源】1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。

【概念】C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

【性质】

面向对象三大特性:封装,继承,多态。

【C语言和C++的关系】

在这里插入图片描述

1.2 C++发展史及其重要性

1.2.1 发展史

【C++的历史版本】

在这里插入图片描述

1.2.2 重要性

重要性不言而喻

【4个层次】

第一个层次,C++基础 (平平常常)第二个层次,正确高效的使用C++ (驾轻就熟)第三个层次,深入解读C++ (出神入化)第四个层次,研究C++ (返璞归真)

【建议】中后期画思维导图总结。

【摘录】 最后,我说一说我的一些感受:

这些年来的对于外企和国内感受—— 国外牛B的IT公司的工程能力并不见得比国内的要强多少,但是国外那些NB的IT公司的架构和设计能力远远超过国内的公司,最可怕的是,那些有超强架构和设计能力的“老程序员们”还战斗在一线,这些战斗在一线的老鸟的能力绝对超过100个普能的新手。对年轻程序员的感受——国内新一代的程序员们太浮燥了。老实说,对于大多数人来说,如果你没有编程到30岁,你还不能成为一个“合格”的程序员。所以,并不是编程编到30岁就玩完了,而是编程编到30岁才刚刚入门。这些不合格的程序,整天BS这个不好,那个不好的,而且喜欢速成,好大喜功。我是一个奔四的人了,编程就像登山一样,越往上爬人越少,所以,在我这个年纪还有想法,对编程还有热情的人不多了,基本上都是转Manager了。其实,什么职位,Title都是虚的,公司没了什么都没了,只有技术才是硬通货。而且,越是这个年纪还在玩编程玩技术的人,其实其经验和能力都是比较强的,都是中坚力量,如果还有其它这个年纪和我一样的人,求交往。

2. C++关键字

C语言32个关键字,C++总计63个关键字。

后期学习慢慢了解。

<code>asm

do

if

return

try

continue

auto

double

inline

short

typedef

for

bool

dynamic_cast

int

signed

typeid

public

break

else

long

sizeof

typename

throw

case

enum

mutable

static

union

wchar_t

catch

explicit

namespace

static_cast

unsigned

default

char

export

new

struct

using

friend

class

extern

operator

switch

virtual

register

const

false

private

template

void

true

const_cast

float

protected

this

volatile

while

delete

goto

reinterpret_cast

3. 命名空间

【引言】

//C语言命名冲突报错

#include<stdio.h>

#include<stdlib.h>

int rand = 10;

int main()

{

int a = 1;

printf("%d\n",rand);

return 0;

}

C++中引入命名空间(namespace)用以解决这类问题。

【概念】

命名空间(namespace)是 C++ 提供的一种解决命名冲突问题的方法,可以将不同作用域的标识符(如变量、函数、类等)组织在一起。

【性质】

是用来组织代码并避免命名冲突的一种机制。避免命名冲突:不同的命名空间中可以有相同名称的变量和函数,彼此不会产生冲突。模块化组织:更好地组织和管理代码,提高可维护性。作用域控制:控制变量和函数的可见范围,避免全局污染。

定义命名空间

namespace myNamespace

{

int a;//定义变量

void fun();//定义函数

}

使用命名空间中的成员

作用域运算符 :: :在C++中用于访问命名空间的成员和限定类的成员函数的定义位置。

可以理解为访问操作符,用于访问变量和函数。

namespace myNamespace

{

int a;

void fun();

myNamespace :: a = 1;//使用变量

myNamespace :: fun();//使用函数

}

嵌套命名空间

namespace 1

{

namespace 2//嵌套

{

int a;

void fun();

}

}

myNamespace::a = 1;

myNamespace::fun();

使用 using声明

#include <iostream>

namespace NamespaceA

{

int a = 5;

}

int main()

{

using NamespaceA::a; // 使用using声明

std::cout << "a = " << a << std::endl; // 直接使用a,无需NamespaceA::前缀

return 0;

}

使用 using namespace指令

#include <iostream>

namespace NamespaceA

{

int a = 5;

void func()

{

std::cout << "Hello from NamespaceA!" << std::endl;

}

}

int main()

{

using namespace NamespaceA; // 使用using namespace指令

std::cout << "a = " << a << std::endl; // 直接访问命名空间NamespaceA中的变量a

func(); // 直接调用命名空间NamespaceA中的函数func

return 0;

}

//【输出】

/*

a = 5

Hello from NamespaceA!

*/

【总示例】

#include <iostream>

// 定义命名空间NamespaceA

namespace NamespaceA

{

int a = 5;

// 定义嵌套命名空间NamespaceB

namespace NamespaceB

{

int b = 10;

}

}

int main()

{

// 使用 using声明

using NamespaceA::a;

std::cout << "Using declaration: a = " << a << std::endl;

// 使用 using namespace指令

using namespace NamespaceA;

std::cout << "Using namespace directive: a = " << a << std::endl; // 可直接使用a

// 使用嵌套命名空间NamespaceB中的成员

std::cout << "NamespaceA::NamespaceB::b = " << NamespaceA::NamespaceB::b << std::endl;

return 0;

}

【输出】

Using declaration: a = 5

Using namespace directive: a = 5

NamespaceA::NamespaceB::b = 10

using和using namespace两者区别:

using声明:通过using 命名空间::成员的方式,可以将命名空间中的特定成员引入当前作用域,只能引入命名空间中的指定成员,不会引入整个命名空间。using namespace指令:通过using namespace 命名空间的方式,可以将整个命名空间的所有成员引入当前作用域,可以直接访问整个命名空间中的成员,但可能会引入命名空间中的不必要成员,增加命名冲突的可能。

4. 输入和输出

#include<iostream>

int main()

{

std :: cout << "Hello C++!" << std :: endl;

return 0;

}

【输出】

Hello C++!

【优化/简化】

#include <iostream>

using namespace std;

int main()

{

cout << "Hello world!" << endl;

return 0;

}

【输出】

Hello world!

【说明】

使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时,必须包含< iostream>头文件以及按命名空间使用方法使用std。cout和cin是全局的流对象,endl是特殊的C++符号,表示换行输出,他们都包含在包含头文件中。<<是流插入运算符,>>是流提取运算符。使用C++输入输出更方便,不需要像printf/scanf输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。实际上cout和cin分别是ostream和istream类型的对象,>>和<<也涉及运算符重载等知识。

注意:早期标准库将所有功能在全局域中实现,声明在.h后缀的头文件中,使用时只需包含对应头文件即可,后来将其实现在std命名空间下,为了和C头文件区分,也为了正确使用命名空间,规定C++头文件不带.h;旧编译器(vc 6.0)中还支持<iostream.h>格式,后续编译器已不支持,因此推荐使用+std的方式。



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。