C++学习汇总2---2.1.1 C++基础---语法

这一节应该算是第一节,刚写了个目录和参考书,刚开始涉及到知识点,本人是从C转的,有点C的基础,所以C++学习就基于C的基础语法已经了解的情况下去总结,C的基础类型和一些简单的关键字就省略了,写到哪算哪吧。

  1. C++特点:原文引用Effective C++条款01中的一些表达,将C++视为一个由相关语言组成的集合,是一种多重泛型编程语言,一个同时支持面向过程,面向对象,面向函数,面向泛型,面向元编程形式的一种语言集合:包括C、C++、template C++、STL四种语言。
    1. C:区块(block)、语句(statements)、预处理器(preprocessor)、内置数据类型、数组、指针等;
    2. C++:类(class)、封装(encapsulation)、继承(inheritance)、多态(polymorphism)、重载(virtual)等;
    3. Template C++:泛型编程,这部分我用的不是很多,C++11新特性会总结一些;
    4. STL:是在Template C++基础上发展而来的一个程序库,它是对容器(container)、迭代器(iterator)、算法(algorithm)以及函数对象的封装;
    5. 三大特性:封装、继承、多态。
  2. 关键字
    1. const
      1. const变量
        const int val = 0;
        val = 2;//报错
      2. cosnt引用
        int val = 0;
        
        //1
        const int &p = val //或者int &const p = val
        p = 2;   //错误
        val = 2; //正确 p = 2
        
        //2
        int &p = 1;       //错误
        const int &p = 1; //正确
         
      3. const指针
        int val = 0;
        
        //1
        const int *p = &val;//或者int const *p = val;
        *p = 2; //错误
        p++;    //正确
        val = 2;    //正确
        
        //2
        int *const p = &val;
        *p = 2;    //正确
        p++;       //错误
      4. const返回值,只有当返回值为变量的指针或引用时const才生效;
        const int val = 0;
        
        //1.const 无效
        const int func_v()
        {
            //do something...
            return 0;
        }
        
        //2.const 有效
        const int* func_p()
        {
            //do something...
            return &val;
        }
        
        //3.const 有效
        const int & func_r()
        {
            //do something...
            return val;
        }
        
        int main()
        {
            int val_v = func_v();
            val_v = 1;    //正确
            int* val_p = func_p(); //错误
            int& val_r = func_r(); //错误
            return 0;
        }

        注:不要返回局部变量的指针或者引用,当局部变量离开作用域后,局部变量会被释放,返回局部变量的指针会引起未定义的行为,导致程序错误。

      5. const类成员函数,不能修改类成员变量的值
        #include <iostream>
        using namespace std;
        
        class A
        {
        public:
            A():val(0){}
            void func() const
            {
                //do something...
                cout << val << endl;
                val = 1; // 错误
            }
        private:
            int val;
        };
        
        int main()
        {
            A a;
            a.func();
            return 0;
        }

        注:每个类成员函数都会获取到指向当前对象的 A* this指针,通过指针可以访问类中的成员变量,但是const类成员函数A::func()中的类成员函数指针为const A* this,所以不能对类成员变量进行修改。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值