zoukankan      html  css  js  c++  java
  • c++0.8-----快速定位c++源码位置的小技巧

    c++ primer第五版 449页 有一句话:iostream类阻止了拷贝,以避免多个对象写入或读取相同的IO缓冲。

    这个时候,很多读者也许都想找找源码,看它是怎么实现的,这个时候可以采用试错的方法:

    我明知道iostream成员不能用构造创建对象,但我偏去试一试:

    iostream im;

    这时候查找报错信息:

    copy.cpp: In function 'int main()':
    copy.cpp:36:11: error: 'std::basic_iostream<_CharT, _Traits>::basic_iostream() [with _CharT = char; _Traits = std::char_traits<char>]' is protected within this context
    iostream im;
    In file included from c:mingwlibgccmingw326.3.0includec++iostream:40:0,
    from copy.cpp:1:
    c:mingwlibgccmingw326.3.0includec++istream:859:7: note: declared protected here
    basic_iostream()
    发现这里已经给出了代码具体位置了,直接复制后查找istream文件的859行就行了。

    查找结果:

    protected:
    basic_iostream()
    : __istream_type(), __ostream_type() { }

    还可以看看其他相关知识,发现:

    basic_iostream(const basic_iostream&) = delete;

    basic_iostream& operator=(const basic_iostream&) = delete;

    也就是说,在类外面既不可以默认构造iostream对象,不能拷贝构造iostream对象,也不可以给iostream对象赋值。

    当然这种方法不是百试百灵,需要一些运气,有时候系统直接处理了,不会给出具体位置的。

  • 相关阅读:
    property函数
    robotframework常见问题解决汇总
    python 基本的序列和映射规则
    robot framework -记录错误
    python 函数部分
    python-文件操作
    网络检测,版本更新
    应用FMDB进行数据存储
    xcode5 各区域快捷键大全
    全国第七届大学生计算机设计大赛
  • 原文地址:https://www.cnblogs.com/yulianggo/p/9389533.html
Copyright © 2011-2022 走看看