C++入门(全)——扬帆起航

本文介绍C++入门知识。C++基于C语言,支持多种程序设计。文中讲解了C++关键字、命名空间、输入输出、缺省参数、函数重载、引用、内联函数等内容,还提及C++11的auto关键字、基于范围的for循环和指针空值nullptr,助读者初步了解C++。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 C++的介绍

1.什么是C++

C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机, 20世纪80年代, 计算机界提出了OOP(object oriented programming:面向对象)思想,支持面向对象的程序设计语言应运而生。
1982年,Bjarne Stroustrup博士在C语言的基础上引入并扩充了面向对象的概念,发明了一种新的程序语言。为了表达该语言与C语言的渊源关系,命名为C++。因此:C++是基于C语言而产生的,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。

二、C++的入门知识

1.C++关键字

相比于C语言的关键字,C++的关键字是在C语言的关键字基础上继承和发展。这里我们只是简单浏览一下,具体的关键字内容我们在日后的学习中逐渐渗透,逐个学习。
 C++关键字

2.命名空间

2.1命名空间的由来

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

#include <stdio.h>
#include <stdlib.h>
int rand = 10;
// C语言没办法解决类似这样的命名冲突问题,所以C++提出了namespace来解决
int main()
{
   
 printf("%d\n", rand);
return 0;
}
// 编译后后报错:error C2365: “rand”: 重定义;以前的定义是“函数”

如果我们引入命名空间,就可以直接将我们创造的变量、函数和类的名称放在这个命名空间中(相当于这些变量、函数和类有了属于自己的作用域),解决了命名冲突和名字污染的问题。

2.2命名空间的定义

下面我们来介绍一下关于命名空间的定义的一些注意事项

1. 正常的命名空间定义

// A是命名空间的名字,一般开发中是用项目名字做命名空间名。
namespace A
{
   
 // 命名空间中可以定义变量/函数/类型
 
 int rand = 10;//变量
 int Add(int left, int right)//函数
 {
   
 return left + right;
 }
 struct Node//结构体类型
 {
   
 struct Node* next;
 int val;
 };
}

2.命名空间可以嵌套

// test.cpp
//这里我们在命名空间N1中嵌套定义了命名空间N2。
namespace N1
{
   
int a;
int b;
int Add(int left, int right)
 {
   
     return left + right;
 }
namespace N2
 {
   
     int c;
     int d;
     int Sub(int left, int right)
     {
   
         return left - right;
     }
 }
}

3.同一个工程中可以存在名字相同的命名空间,编译器会将它们合并到一起

//test1.cpp
namespace N1
{
   
int a=0;
}

//test2.cpp
namespace N1
{
   
int b=0;
}

//上述代码中的两个相同的命名空间分别写在了test1.cpp文件、test2.cpp文件中

2.3命名空间的使用

那么命名空间该如何使用呢?下面介绍三种方法

namespace A
{
   
 // 命名空间中可以定义变量/函数/类型
 
 int a = 10;//变量
 
 int Add(int left, int right)//函数
 {
   
 return left + right;
 }
 
 struct Node//结构体类型
 {
   
 struct Node* next;
 int val;
 };
}

1.加命名空间及作用域限定符

int main()
{
   
printf("%d\n",A::a);
return 0;
}

2.使用using将命名空间中的某个成员引入

using A::a;
int main()
{
   
printf("%d\n",a);
return 0;
}

3.使用using namespace 命名空间名称引入

using namespace A;
int mian()
{
   
printf("%d\n",b);
return 0;
}

3.C++输入和输出

#include<iostream>
using namesapce std;
//注意:std是C++标准库的命名空间名,C++将标准库的定义实现全部放在这个命名空间里面
int main()
{
   
cout<<"hello word!"<<endl;
int a;
double b=2.501;
char c='v';
cin>>a;
//这里直接自动识别变量的类型
cout<<a<<b<<c<<c;
cout<<a<<b<<endl;
cout<<c<<endl;
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值