栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习日报————华清远见学习

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习日报————华清远见学习

一、什么是C++?

c++是一种面向对象的语言。业界从工程项目(Linux)应用面向对象的设计方法,在C语言中加入了面向对象的方法。C++就诞生了。

C++与C语言不是竞争关系,C++是C语言的一个加强。C++完全兼容所有的C语言的语法。

二、命名空间 2.1前言

         在C/C++中,变量,函数,类都是大量存在的,这些变量,函数,类都存在于全局作用域中,这个时候就会造成很多的冲突,为了避免这种冲突,C++提供了命名空间的方式爱解决问题。

2.2命名空间的使用

定义命名空间,需要使用 namespace关键字, 后面要跟上命名空间的名字, 然后接上一对儿 {}, {}里面就是命名空间的成员

2.3命名空间的格式
格式: 
namespace 命名空间的名称
{
    命名空间里面的内容.        
}
注意: 
    程序在用到 变量/ 函数的时候,先会去局部作用域中寻找,如果局部作用域中没有,在去全局作用域中寻找,不会去命名
    空间作用域中寻找. 
2.4命名空间的嵌套
格式: 
namespace N1
{
     命名空间成员;   
    namespace N2
    {
        命名空间成员    
    }
}

demo: 
namespace N1 
{
    int a = 10;
    int b = 20;
    int Add(int left, int right)
    {
        return left + right;    
    }
    namespace N2 
    {
        int c = 100;
        int d = 200;
        int sub (int left, int right)
        {
            return left - right;       
        }    
    }
}
2.5定义相同名称的命名空间

        同一个工程中允许存在多个名称的命名空间,编译器最后会合成到同一个命名空间中。

#include 


namespace N1
{
    int  number1 = 100;
}

namespace N1
{
    int  number2 = 200;
}

int main()
{
    printf("number1 : %dn", N1::number1); 
    printf("number2 : %dn", N1::number2); 
    return 0;
}
三、命名空间的使用        3.1 通过作用域限定符(::)来访进行问

        "::":功能,指定去哪个作用域里面寻找对应的变量或者函数。

#include 

// 定义命名空间  N1 
namespace N1
{
    // 定义命名空间里面的内容
    int printf = 20;

}


int main()
{
    int number = 20;
    printf("number = %dn", number);
    printf("N1::printf = %dn", N1::printf);
    return 0;
}
       3.2 使用using namespace 命名空间名称

        功能:将命名空间里面的成员全部引入到全局作用域中

        注:使用using namespace 命名空间名称 会破坏命名空间的封装作用

#include

namespace N1 
{
    int a = 10;
    int b = 20;
    int Add(int left, int right)
    {
        return left + right;  
    }
    namespace N2 
    {
        int c = 100;
        int d = 200;
        int sub (int left, int right)
        {
            return left - right;      
        }    
    }
}

using namespace N1;


int main()
{
    // 如何使用 sub函数并且传递的参数为 N1 里面 a, b 
    
    // 需要访问 sub 函数
    int ret = N2::sub(a, b);
    printf("ret = %dn", ret);
    return 0;
}
 3.3使用using 将命名空间中的单独的成员引用

功能: 将命名空间中的单独成员加载到全局作用域中.

格式: using 命名空间名称::成员

#include 


namespace N1
{
    int money1 = 100;
    int money2 = 200;
    int money3 = 300;
    int money4 = 400;
    int money5 = 500;
    int money6 = 600;
}

// 将单独的成员变量 money1加载到全局作用域
using N1::money1;
int main()
{
    printf("money1 = %dn", money1);
    printf("money2 = %dn", money2);   // error 没有将money2加载到全局作用域中
    return 0;
}
四、输入输出  4.1输出 cout<< "a = "<< a <        c++语法中输入输出使用 iostream 这个头文件,以及std标准命名空间来输入输出

        使用cout 输出。 cout:是一个对象 ostream这个类的对象。

        << : 运算符 将hello world 的内容通过 << 流入 cout这个对象。 // endl : 全称 end line == n

// c++语法中输入输出使用 iostream 这个头文件,以及std标准命名空间来输入输出
#include 

// 展开 std 命名空间
using namespace std; // 命名空间。输出对象 cout 是定义在 std这个命名空间里面的

int main()
{
    // 输出hello world 
    cout << "hello world  << std::endl;
    // 使用cout 输出。  cout:是一个对象  ostream这个类的对象。
    // << : 运算符 将hello world 的内容通过 << 流入 cout这个对象。 
    // endl : 全称 end line == n
    return 0;
}
注: 
    cout 输出的内置类型.  无需在意类型, 都可以自己输出.
4.2输入cin>>number;

        c++ 中的输入更加的方便, 无需在意数据格式控制. 比如 c语言中, 整形 %d 字符 %c ,在c++中,无需 控制格式.

#include 

// 展开命名空间 
using namespace std; 


int main()
{
    // c++ 语言 输入使用的 cin. 他是 iostream类里面的一个全局对象。定义在std 这个命名空间中
    
    int number;

    // 从键盘中输入数据到 number 中
    cin >> number;
    // cout << cin; // 将 cin这个对象 输出到 显示器中。 error
    //cout << "number :" << number << endl;   // 每次流入到cout 里面必须是同一个中数据类型
    return 0;
}
五、缺省参数 5.1概念

        缺省参数在声明或者定义函数的时候为函数的一个参数指定一个默认值, 在调用这个函数的时候,如果没有指定实际参数,则采用该函数的默认值. 否则使用指定的参数.

#include 
// 展开命名空间
using namespace std;

// 定义缺省参数 num 为0
void TestFunction(int num = 0)
{
    cout << "num :" << num << endl;
}

int main()
{
    TestFunction() ; // 没有传递参数, 使用默认值
    TestFunction(100) ; // 传参的时候,使用指定的实际参数

    return 0;
}
5.2 缺省参数的分文件编写

        在函数分文件编译中, 缺省参数的值, 只能够在声明函数的时候给出. 不可以在实现的时候给出.

head.h 
#include 

using namespace std;

//  声明缺省函数
void TestFunction(int num = 100); // 函数声明时候给出缺省值

test.cpp
#include "head.h"

void TestFunction(int num)  // 函数定义的时候不能给出缺省值.
{
    cout << num << endl;
}
5.3缺省参数的分类 5.3.1全缺省参数

        所有的参数: 全部给出缺省值.

# 定义一个打印年月日的全缺省函数
void  show(int year = 0, int month =1 , int day =1)
{
    cout << year << month << day << endl;
}
5.3.2半缺省参数

        半缺省参数: 最少有一个参数拥有缺省值 .

# 定义一个打印年月日的半缺省函数
void  show(int year , int month =1 , int day)
{
    cout << year << month << day << endl;
}
六、函数重载 6.1 前言

        自然语言中. 一词多意. demo: 中国有两项体育运动没有悬念, 一个是乒乓球,一个是男足, 前面的谁也赢不了, 后面也是谁也赢不了.

6.2 定义

        函数重载: 函数的一种特殊情况, C++允许在同一个作用域中申明几个功能类似的同名函数. 这些同名函数中形式参数列表(参数的个数, 类型, 顺序) 必须不同.

        解释: 在 c++ 中允许定义函数名相同的函数,但是定义的函数参数必须不同(个数或者类型) 他们就构成函数的重载.

        在调用函数的时候, 会根据传递过来的实际参数,选择对应的函数进行调用.

#include 
using namespace std;

// 定义计算两个整形的函数:
int Add(int left , int right)
{
    cout << "int " < 
6.3函数重载原理 

七、引用 7.1 引用概念

        引用类比的是 c语言的指针.

        引用不是定义一个新的变量, 它是个已经存在的变量起一个 "别名"

7.2 引用定义格式

        类型 & 别名 = 引用的实体

#include 

// 展开空间命名空间
using namespace std; 


int main()
{
    // 定义一个变量 a 
    int  a = 10;

    // 给变量 a 取一个别名 
    int &ra = a; // ra 是 a 的一个别名。 ra 改变, a 也要改变。 
    a = 100;
    printf("&ra = %dn", ra);

    return 0;
}
7.3引用特性

        引用在定义的时候必须要求初始化.

        引用一旦引用一个实体,在也不引用其他实体了.

        一个变量可以有多个引用

#include 

using namespace std;


int main()
{
    int a = 10;
    // 引用必须要初始化,如果不初始化, 编译会出错的
    // int &ra;  // 定义引用没有初始化

    // 一个变量可以有多个引用
    int &ra = a;
    int &rra = a;
    int &rrrra = a;
    
    // 引用一旦引用了一个实体,就不能在引用其他实体了。
    int b = 100;
    int &rb =b ; // 给rb 引用一个实体 b , rb 就再也不能引用其他实体了
    rb = a; // 将 a 的值赋值给了, b .

    


    return 0;
}
7.4常引用const

        const : 将变量设置为只读属性.

        权限只能够缩小, 不能够扩大.

#include 
using namespace std;


int main()
{
     
    int a = 10;  // 定义了变量 a . a的权限是可读可写

    const int &ra = a; // 定义了常引用 ra ,只能够读。
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号