初见C++

本文介绍了C++编程的难点,如面向对象的概念及其与C语言的差异,以及如何在Ubuntu下安装编译器。还涵盖了C++的关键字如内联函数、引用、函数重载等,以及类与对象、封装、继承和多态的基础概念,以及访问权限和编译器对变量存储的对齐规则。
摘要由CSDN通过智能技术生成

首先:C++是所有编程语言中最难的
    属性:面向对象的编程思想
    不能像C一样编写操作系统(比C语言差30%)
    万物皆对象(C语言中:万物皆变量)
    变量:一段内存空间

    1、类库:MFC、STL、QT、OpenCV、OpenGL
   

在ubuntu 下安装C++编译器:sudo apt-get install build-essential

    2、编译:g++ -o hello hello.cpp
    3、运行:./hello

C++中的关键字


    auto:自动类型推导   auto关键字不能定义函数形参
    auto fn(int n)->void
    register:寄存器变量
    extern:声明外部变量
    static:静态变量、静态函数、静态成员变量、静态成员函数
    const :C(只读变量)C++(常量)
    const int *p;   修饰的是p指针,指向的int是常量
    然而p 的值可修改。

    const int * const p;  修饰的是p指针,指向的int也是常量
    const int *p = &a;  修饰的是p指针,指向的int是常量
   
    const int a = 10;  修饰的是a变量,a是常量
    
    const int constantValue = 3;
    const int* p = &constantValue;

    static_cast<int>(a); // 静态转换

    dynamic_cast<int*>(p); //通常指针转换
    const_cast<int*>(p);
    reinterpret_cast<int*>(p);

    1.内联函数:inline定义在头文件中的函数,编译器会自动内联,减少函数调用的开销
    2.形参存在默认值:实参可以不传递参数
        add(int a = 0, int b = 0);
        cout << add(10) << endl;
        add (int a, int b = 0, int c = 0);

    3.引用传参
        void add(int &a, int &b);
        引用是某个变量的别名。
    引用和指针的区别:
        1、引用不占空间,指针占8字节。
        2、引用必须初始化,指针不用初始化
        3、引用一旦绑定,就不能再绑定其它变量。而指针可以拆解。

    4、函数重载:
        允许函数同名,但不同参数类型。(个数和类型)
        编译器会选择和调用参数匹配的函数。
        返回值不同,编译器会报错。
        int add(int a, int b);
        int add(int a, int b, int c);
        
    类与对象
        数据类型和变量的关系:抽象和具体的关系

        1、抽象:将    1、类:
    2、对象:
    面向对象的基本特点:复杂的问题用简单的模型来表达
        2、封装:封装就是把一些数据(属性)和操作(方法)封装在一起,对外隐藏一些实现细节,只对外提供一些接口。
            将属性和方法有机结合,形成"类"。数据和函数都是类的成员。
        3、继承:继承就是子类可以继承父类的属性和方法,同时还可以添加自己新的属性和方法。
        4、多态:多态就是指同一个操作符可以有不同的含义,在不同的场景下有不同的含义。
            包含性多态!!!

   //示例:
    class Clock
    {
    public:
        void showTime()
        {
            cout << hour << ":" << minute << ":"<< second << endl;
        }
        void setTime(int h, int m, int s);
        {
            hour = h;
            minute = m;
            second = s;
        }
        int hour;
        int minute;
        int second;
    };   

    int main(void)
    {
        Clock c;
        c.setTime(10, 20, 30);
        c.showTime();
    }

    访问权限关键字:
    public:公众的
    private:私有的
    protected:保护的

    类外:类的使用者使用的代码
    类内:类的设计者使用的代码
    类外:类的使用者使用的代码

    类中的函数存放在代码区,所以sizeof(complex)= 4

编译器对变量存储时的对齐方式:
    VC++:4字节对齐    以Ubuntu18.04版本为例
    GCC:以最大的字节对齐
 

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值