• c++学习笔记(2)


    1.对于定义好的函数bool fibon_elem(int pos, int &elem){}, 调用的时候写fibon_elem(pos, elem)就可以,不需要在调用过程中使用&
    但如果函数定义是bool fibon_elem(int pos, int &elem){},那么如果需要声明该函数,必须是bool fibon_elem(int, int &),即是,声明的时候不能省略&

    2.操作一个ref和操作这个ref所代表的对象没有任何区别

    3.在定义ref的时候就需要给ref赋值,并且这个ref就永远代表它所指的对象。有点类似于java中的final static变量,必须在定义的时候赋值并且永不会被修改。

    4.对于一个const的vector,vector[index]=n这句是错误的。好好理解!!

    5.传递内置类型时,不要使用转址方式,转址机制主要用于转递class object

    6.当调用一个函数时,会在内存中建立一块特殊区域,称为“程序堆栈”。这个区域提供了每个函数参数和该函数种所定义的对象的存储空间。一旦函数完成,这块内存就会释放掉。

    7.默认情况下,由heap分配而来的对象,皆未经初始化
    new Type
    new Type(initial_value)
    new Type[length]
    delete point
    delete [] point

    8.不论以point或reference形式将函数的局部变量返回,都不正确。
    by me 我自己测试,无论是以point或reference返回局部变量,甚至直接返回局部变量,都是可以的,不会有语法错误,但是会有编译警告。
    但如果使用point时,就会出现意外的情况,因为局部变量的内存可能已经被释放了!!!
    但如果使用reference时,是正常的,不知道是不是测试问题???

    9.默认值只能够制定一次,可以在函数声明处,也可以在函数定义处,但不能够在两个地方都指定。为了可见性,一般把默认值放在函数声明处。
    by me 我自己测试,默认值不能在两个地方都指定,这个是对的,如果都指定的话,编译错误。
    但默认值函数如果在函数声明处指定的话,没什么问题,调用该函数时,可以传递参数也可以不传递参数。
    但默认值函数如果在函数定义处指定的话,调用该函数时,必须要传递参数。如果不传递则编译报错。

    10.如果一个函数返回的是const对象,那么这个对象不能赋值给非const对象

    11.inline即可放在h文件也可以放在cpp文件中或者同时存在h文件和cpp文件中,都不会报错。

    12.关于重载
    下面代码是合法的:
    void demoOverload(string s)
    {
    }

    void demoOverload(string& s)
    {
    }

    void demoOverload(const string& s)
    {
    }

    void demoOverload(string* s)
    {
    }

    void demoOverload(const string* s)
    {
    }
    下面代码是非法的:
    void demoOverload(string s)
    {
    }

    void demoOverload(const string s)
    {
    }
    即是说,用const修改point或者reference可以是不同的函数重载,但如果const直接修饰对象,不是函数重载。

    13.模板函数调用的时候,并不需要制定类型。这个和泛型不同。

    14.头文件中的变量声明???

  • 相关阅读:
    CI框架学习——基本的用法(一)
    android测试之——Instrumentation(一)
    android测试之——mokeyrunner上(二)
    两台linux机器时间同步
    linux常用命令
    hdu2609(最小表示法)
    poj1509(环形字符串求最小字典序)
    最小最大表示法,求环形字符串的最小最大字典树(模板)
    区间dp总结篇
    dp之最长递增、公共子序列总结
  • 原文地址:https://www.cnblogs.com/tianlanliao/p/4023297.html
Copyright © 2020-2023  润新知