• C++自学笔记_3种操作符_《C++ Primer》


    1. 箭头操作符

      C++为包含点引用操作符和解引用操作符的表达式提供了一个同义词:箭头操作符(->)。

      点操作符用于获取类类型对象的成员:

    item.same_isbn(item2);   //item是个类类型对象,same_isbn(Sales_item item)是该对象定义的方法

      假如现在有指向Sales_item对象的指针或者迭代器,则在使用点操作符前,需要先对改指针或者迭代器进行解引用:

    Sales_item *sp=&item1;
    (*sp).same_isbn(item2); //注意要用括号括起来,因为解引用操作符的优先级低于点操作符

      上述代码没有问题,但是容易出错,所以C++定义的箭头操作符。

      上述代码可以直接这么写:

    Sales_item *sp=&item1;
    sp->same_isbn(item2);

      放道习题:

      假设iter为 vector<string>::iterator 类型的变量,指出下面哪些表达式是合适的?并解释这些合法表达式的行为。

      (a) *iter++;          (b) (*iter)++;          (c) *iter.empty();

      (d) iter->empty();       (e) ++*iter;           (f) iter++->empty();

      解答:

      (a)是合法的,后自增操作符的优先级要高于解引用操作符,但是要注意的是如果有返回的值,返回的对象是迭代器增加前指向的对象而不是增加后指向的对象,虽然后自增先执行。

      (c)是非法的,点操作符的优先级高于解引用操作符(点操作符的优先级很高啊...)

      (d)是合法的,这就是上面所说的内容,意思是调用iter所指向的对象的empty()方法。

      (e)是非法的,前自增操作符的优先级等于解引用,所以遵循从左至右的顺序,所以如果是*++iter就对了。

      (f)是合法的,先执行和(d)一样的操作,完了以后iter加1。

    2. 条件操作符

      条件操作符是C++中唯一的三元操作符。这里就说明它的一个用途:使用嵌套的条件操作符求出三个变量的最大值,并将最大值赋值给max.

    int main(){
        int a=7,b=9,c=8;
        int max=a>b?a>c?a:c:b>c?b:c;
        cout<<max<<endl;
        return 0;
    }

    3. sizeof操作符

      sizeof操作符的作用是返回一个对象或类型名的长度,单位是字节

      ·对char类型或者值为char类型的表达式做sizeof操作保证得1。

      ·对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小。

      ·对指针做sizeof操作将返回存放指针所需要的内存大小;注意:如果要获取该指针所指向的对象的大小,则必须对该指针进行解引用。

      ·对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘上数组元素的个数。因为sizeof返回整个数组在内存的存储长度,所以用sizeof数组的结果除以sizeof其元素类型的结果,即可求出数组元素的个数。

    int x[10];
    int *p=x;
    cout<<sizeof(x)/sizeof(*x)<<endl;    //10
    cout<<sizeof(p)/sizeof(*p)<<endl;    //1

      关于对类对象调用sizeof操作符。

    Sales_item item;
    int a=sizeof(item);
    cout<<a<<endl;      //a=16

    完了。

  • 相关阅读:
    A Survey of Deep Clustering Algorithms
    随机傅里叶特征(Random Fourier Features)
    MATLAB实例:二元高斯分布图
    MATLAB实例:PCA(主成成分分析)详解
    MATLAB用“fitgmdist”函数拟合高斯混合模型(一维数据)
    Extreme Learning Machine
    在MATLAB R2018b中配置VLFeat
    Deep Clustering Algorithms
    机器学习优化算法
    sql注入总结
  • 原文地址:https://www.cnblogs.com/Murcielago/p/4121780.html
Copyright © 2020-2023  润新知