首页 > 编程语言 >C++基础入门

C++基础入门

时间:2024-08-10 16:27:39浏览次数:13  
标签:rand 入门 int 基础 namespace 缺省 C++ printf 命名

一· 命名空间(namespace)

正常namespace的使用

include <stdio.h>
#include <stdlib.h>
// 1. 正常的命名空间定义
// wzh是命名空间的名字,⼀般开发中是⽤项⽬名字做命名空间名。
namespace bit
{
    // 命名空间中可以定义变量/函数/类型
    int rand = 10;
    int Add(int left, int right)
    {
        return left + right;
    }
    struct Node
    {
        struct Node* next;
        int val;
    };
}
int main()
{
    // 这⾥默认是访问的是全局的rand函数指针
    printf("%p\n", rand);
    // 这⾥指定bit命名空间中的rand
    printf("%d\n", wzh::rand);
    return 0;
}

命名空间嵌套

//在kj这个公司里面有zs  ls 两个人 各自用自己命名空间里的东西
namespace kj
{
    // zs
    namespace zs
    {
        int rand = 1;
        int Add(int left, int right)
        {
        return left + right;
        }
    }
    // ls
    namespace ls
    {
        int rand = 2;

         int Add(int left, int right)
        {
            return (left + right)*10;
        }
    }
}
int main()
{
printf("%d\n", kj::zs::rand);
printf("%d\n", kj::ls::rand);
printf("%d\n", kj::zs::Add(1, 2));
printf("%d\n", kj::ls::Add(1, 2));
return 0;
}

多文件定义同名namespace

多文件定义同名namespace代码量有点长,这边就不展示了,下面列出需要注意的点

  • 多⽂件中可以定义同名namespace,他们会默认合并到⼀起,就像同⼀个namespace⼀样

namespace定义

  1. 命名空间中可以定义变量/函数/类型等。
  2. namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量
  3. namespace只能定义在全局,当然他还可以嵌套定义。

命名空间的使用

  • 指定命名空间访问,项⽬中推荐这种⽅式。
    
    namespace bit
    {
        int a = 0;
        int b = 1;
    }
    
    int main()
    {
        printf("%d\n", N::a);
        return 0;
    }
    

  • using将命名空间中某个成员展开,用于经常访问的不存在冲突的成员推荐这种⽅式。 
namespace bit
{
    int a = 0;
    int b = 1;
}

using N::b;//将命名空间中某个成员展开
int main()
{
    printf("%d\n", N::a);
    printf("%d\n", b);
    return 0;
}
  • 展开命名空间中全部成员,项⽬不推荐,冲突⻛险很⼤,⽇常⼩练习程序为了⽅便推荐使⽤。
namespace bit
{
    int a = 0;
    int b = 1;
}

using namespce N; //将命名空间中全部成员展开
int main()
{
    printf("%d\n", a);
    printf("%d\n", b);
    return 0;
}

二· 缺省参数

  • 在调⽤该函数时,如果没有指定实参 则采⽤该形参的值缺省
  • 全缺省就是全部形参给缺省值
  • // 全缺省
    void Func1(int a = 10, int b = 20, int c = 30)
    {
        cout << "a = " << a << endl;
        cout << "b = " << b << endl;
        cout << "c = " << c << endl << endl;
    }
  • 半缺省就是部分形参给缺省值(不是一半给缺省值)

           注意:半缺省参数必须从右往左 依次连续缺省,不能间隔跳跃给缺省值。

// 半缺省
void Func2(int a, int b = 10, int c = 20)
{
    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl << endl;
}
  • 带缺省参数的函数调⽤,C++规定必须从左到右依次给实参,不能跳跃给实参。
// 半缺省
void Func2(int a, int b = 10, int c = 20)
{
     cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl << endl;
}
int main()
{
//调用是必须从左往右给值,不能跳跃传参
    Func2();
    Func2(1);
    Func2(1,2);
    Func2(1,2,3);
}
  • 函数声明和定义分离时,缺省参数不能在函数声明和定义中同时出现,规定必须函数声明给缺省值。

函数重载

C++⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。

注意:返回值不同不能作为重载条件,因为调用时无法区分

参数类型不同

// 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;
}

参数个数不同 

// 1、参数个数不同
int Add(int left, int right)
{
    cout << "int Add(int left, int right)" << endl;
    return left + right;
}

int Add(int left)
{

    return left;
}

参数类型顺序不同 

// 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;
}

特殊情况报错 

// 下⾯两个函数构成重载
// f1()调⽤时,会报错,存在歧义,编译器不知道调⽤谁
void f1()
{
    cout << "f()" << endl;
}
void f1(int a = 10)
{
    cout << "f(int a)" << endl;
}

标签:rand,入门,int,基础,namespace,缺省,C++,printf,命名
From: https://blog.csdn.net/2301_77331799/article/details/141016982

相关文章

  • 1.动手编写第一个makefile编译c++多文件项目
    1.动手编写第一个makefile编译c++多文件项目1.1ubuntu开发环境安装•apt-getupdate#更新安装源•apt-getinstallg++#安装gcc和c++的开发库•apt-getinstallgdb#调试工具•apt-getinstallmake•apt-getinstallopenssh-server#远程连接工具•apt-getin......
  • 2024年华为OD机试真题-推荐多样性-C++-OD统一考试(C卷D卷)
    2024年OD统一考试(D卷)完整题库:华为OD机试2024年最新题库(Python、JAVA、C++合集) 题目描述:推荐多样性需要从多个列表中选择元素,一次性要返回N屏数据(窗口数量),每屏展示K个元素(窗口大小),选择策略:1.各个列表元素需要做穿插处理,即先从第一个列表中为每屏选择一个元素,再从第二个列......
  • 网络编程基础
    目录学习内容:1. 网络体系结构及OSI开放系统系统互联模型1.1 网络体系结构概念 1.2 OSI开放系统互联模型1.3 TCP/IP协议族(簇)的体系结构1.4 TCP/IP四层结构中常见的协议 2. TCP和UDP异同(笔试面试)3.网络编程基础相关的概念3.1 字节序2>验证主机大小端的方......
  • 入门岛3-Git 的使用与项目构建
    任务概览任务1:破冰活动:自我介绍任务2:实践项目:构建个人项目参考:git流程:csdn1csdn2任务1:破冰活动:自我介绍1.Git是一种开源的分布式版本控制系统,广泛应用于软件开发领域,尤其是在协同工作环境中。它为程序员提供了一套必备的工具,使得团队成员能够有效地管理和......
  • Vue3Pinia入门学习
    文章目录什么是pinia创建空Vue项目并安装Pinia1.创建空Vue项目2.安装Pinia并注册、基础用法:实现counter实现getters异步actionstoreToRefs保持响应式解构什么是piniaPinia是Vue的专属状态管理库,可以实现跨组件或页面共享状态,是vuex状态管理工具的替代品,和......
  • c++习题18-计算鞍点
    目录一,题目二,思路三,代码一,题目给定一个5×5的矩阵,每行只有一个最大值,每列只有一个最小值,寻找这个矩阵的鞍点。鞍点指的是矩阵中的一个元素,它是所在行的最大值,并且是所在列的最小值。例如:在下面的例子中(第4行第1列的元素就是鞍点,值为8)。11356912478101056......
  • 004.Vue3入门,使用绑定属性时undefined和disabled用法
    1、代码如下:<template><divv-bind:id="myId1"v-bind:class="testCls">测试1</div><divv-bind:id="myId2"v-bind:title="testTitle">测试2</div><div:id="myId3":class="te......
  • c++习题20-百钱百鸡
    目录一,题目二,思路三,代码 一,题目农夫约翰今天来到了畜牧市场,想给自己的农场里买点鸡回去。已知公鸡一只5块钱,母鸡3块钱,小鸡崽子一块钱三只。农夫手里有N元,他想买N只鸡,但是他跟ljc一样数学不好,想让你帮他算一算有几种买法,以方便他挑选。输入描述一个整数N,约翰手里的钱......
  • 002.Vue3入门,使用模板语法的一些高级功能
    1、代码如下:<template><h3>模板语法</h3><p>{{msg}}</p><p>{{msg_cn}}</p><p>{{number+1}}</p><p>{{ok?'Yes':'No'}}</p><p>{{message.split("......
  • C++ 类型转换
    目录0.前言1.C语言类型转换1.1隐式类型转换1.2显式类型转换2.C++强制类型转换2.1static_cast2.2reinterpret_cast2.3const_cast2.4dynamic_cast3.为什么C++需要4种强制类型转换3.1类型转换的多样性需求3.2提高类型转换的安全性3.3提供更明确的语义3.4支持高......