C++笔记(新手入门)

大家好,我是小天。这是我在学习C++课程的一些笔记总结,争取能让所有刚入门C++的小伙伴轻松理解。不过还是需要小伙伴有学过其它语言的一点经验,学过C最好。C++笔记系列会不定期更新,如果对你有帮助请留下个赞吧!这会成为小天更文章的动力。

一、面向过程和面向对象的概述

从第一个程序入手

//i input 输入  o output 输出 stream流 输入输出流头文件,类似 //<stdio.h>
#include <iostream>
//std(标准) 使用标准的命名空间,里面有大量可用的工具
using namespace std;

//有且只有一个主函数,可以有多个其他函数
int main()
{
    //cout 输出 类似c语言的printf
    //endl 类似c语言的换行符
    //cout代表输出设备,输出内容由"<<"指向输出设备
    cout << "Hello world!" << endl;
    //cin代表输入设备,并刷新缓冲区
    int num = 0;
    cin >> num; //不用取地址符,将将键盘输入的数据
 //赋值给num    
    cout<<"num = "<<num<<endl; //输出num,专注于输出,不用考虑类型
     return 0;
}

#输出结果:

Hello world!
100
num = 100

分析:

  1. c++引用库的后面不用加后缀.h(加了也可以运行),例如c里面的iostream.h,c++程序也可以用,但要去掉.h,math.h变成cmath。如果是自己写的文件要引用,老老实实双引号加.h后缀,例如"fun.h"。

  2. c语言是弱语法 语言(很多警告可以忽略 正常执行),c++是强语法语言(c语言很多警告c++直接报错)。

  3. C是面向过程的,其编程思想核心是功能分解,自顶向下,逐层细化(程序=数据结构+算法)

  4. 面向对象编程,简称OOP技术,将算法与数据结构看作一个整体,称作对象,现实世界中任何类的对象都具有一定的属性和操作,也总能用数据结构与算法两者合一地来描述,所以可以用以下等式来定义对象和程序:

    对象=算法+数据结构

    程序=对象+对象+…

C++的三大特性

封装:把客观的事物抽象成一个类(将数据和方法打包再一起,加以权限的区分,达到保护并安全使用的目的)

继承:继承所表达的是对象类之间的关系,这种关系使得对象可以继承另外一类对象的特征和能力。作用:避免共用代码的重复开发,增加了程序的可重用性,减少了代码和数据的冗余。

多态:多态性可以简单理解为“一个接口,多种方法”,字面意思为多种形态。程序在运行的时候才决定调用的函数,它是面向对象编程领域的核心概念。

二、C++对C的拓展

一、命名空间的定义

  • 为解决变量名重名的问题,用namespace

    //定义一个名字位A的命名空间(变量、函数)
    namespace A{
        int a = 100;
    }
    
    namespace B{
        int a = 200;
    }
    void test01()
    {
        cout<<"A中a = "<<A::a<<endl;
        cout<<"B中a = "<<B::a<<endl;
    }
    int main()
    {
        test01();
        return 0;
    }
    

结果:

A中a = 100
B中a = 200

注意:

  • 命名空间只能在全局范围内定义,不能再函数里面定义

  • 命名空间可以嵌套

    namespace A{
        int a = 100;
        namespace B{
            int a = 200;
        }
    }
    
    
    void test02()
    {
        cout<<"A中a = "<<A::a<<endl;
        cout<<"B中a = "<<A::B::a<<endl;
    }
    
  • 命名空间是开放的,可以随时已有的命名空间中添加新成员

    namespace A{
        int a = 100;
        namespace B{
            int a = 200;
        }
    }
    
    namespace A{
        int c = 300;//将c添加到已有的命名空间中
    
    }
    void test03()
    {
        cout<<"A中a = "<<A::a<<endl;
        cout<<"B中a = "<<A::B::a<<endl;
        cout<<"A中c = "<<A::c<<endl;
    }
    
  • 命名空间可以存放变量和函数

    namespace A{
        int a = 100;
        void func()
        {
            cout<<"func遍历a = "<<a<<endl;//自家人不需要A::a
        }
    }
    
    void test04()
    {
        //变量的使用
        cout<<"A中a = "<<A::a<<endl;
        //函数的使用
        A::func();
    }
    
  • 命名空间中的函数,可以在“命名空间”外 定义

    namespace A{
        int a = 100;
        void func();
    }
    
    void A::func()//成员函数,在外部加记得作用域
    {
            //访问命名空间的数据不用加作用域
            cout<<"func遍历a = "<<a<<endl;
    }
    
    void funb()//普通函数 要加作用域
    {
            cout<<"funb遍历a = "<<A::a<<endl;
    }
    
    void test05()//普通函数
    {
        A::func();
        funb();
    }
    
  • 无名命名空间,意味着命名空间中的标识符只能在本文件内访问,相当于给这个标识符加上了static,使得其可以作为内部连接

    namespace{
        int a = 100;
        void func()
        {
            cout<<"func遍历a = "<<a<<endl;
        }
    }
    
    void test06()
    {
        cout<<"a = "<<a<<endl;
        func();
    }
    
  • 给命名空间取别名

    namespace A{
        int a = 100;
        void func()
        {
            cout<<"func遍历a = "<<a<<endl;
        }
    }
    
    void test()
    {
        namespace B = A;
        cout<<"A::a = "<<B::a<<endl;
        A::func();
        B::func();
    }
    //结果:
    A::a = 100
    func遍历a = 100
    func遍历a = 100
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值