解开一个困扰自己多时的小问题

小序

今天上班的时候问了一起工作的Sidney同学一个小问题,显然他是研究过了的,不过他当时没有给出我答案。这个问题着实困扰了我好长时间捏~~

     晚上吃的小葱蘸酱,呵呵,吃完之后气儿顺了、脑子也清醒了许多,想起这个问题没搞定,于是顺着Sidney同学提供的线索把问题搞明白了。

正文

     问题是这样的……

相信下面这个程序凡是会写C++程序的同仁都认得,估计学会的第一个C++程序就是它了吧:

//———————————————-
// 水之真谛
// http://blog.csdn.net/FantasiaX
//———————————————-

include

int main(int argc, char *argv[])
{
std::cout << “Hello, World.” << std::endl;
return 0;
}

     我会写一点C语言的程序,于是在写这个程序的时候就对很多东西“想当然”了。比如对于操作符“<<”,在心里一直是与C语言的printf()函数对应起来的——认为它就是封装进了ostream对象中的printf()函数。既然是这样,那么对于“endl”,自然就“想当然”地认为它是“/n”了。

     突然有一天,在Visual Studio弹出的代码自动完成窗口中发现,endl不是一个成员变量(如果它代表一个字符,那么理应是一个字符类型的成员变量)而是一个成员函数!大脑中立刻蹦出一个解释:或许endl函数的返回值是字符“/n”吧?可是这个答案存活了不到一秒钟就被否定了——如果想让一个函数执行从而得到它的返回值,应该是调用这个函数,所以写法应该是“std::endl()”而不是“std::endl”。写成“std::endl”是将函数名放在这里,并不是在调用这个函数。哈~~脑子里的概念开始互相打架了~~



     因为问题是出在了endl上,所以一直在查endl的定义——结果除了发现MSDN里有个Bug之外,一无所获L

MSDN里是这样声名的:

template class<_Elem, _Tr>
basic_ostream<_Elem, _Tr>& endl( basic_ostream<_Elem, _Tr>& _Ostr );

红色标记的地方写错了:p

C++ ISO文档里是这样声名的:

template

include

int main(int argc, char *argv[])
{
std::cout << “Hello, World.” << &std::endl;
return 0;
}

致谢

     感谢Sidney——谢谢你对我技术上的指导。更重要的是你提醒了我学习的方面——不要只把眼睛盯在一个地方,还要看到与它相关联的事物。还有就是要多看书,我看的书还是太少了。

     博文视点就要三周年庆典了,也祝博文视点的朋友们万事如意、工作顺利、身体健康!

法律声明:本文章受到知识产权法保护,任何单位或个人若需要转载此文,必需保证文章的完整性(未经作者许可的任何删节或改动将视为侵权行为)。若您需要转载,请务必注明文章出处为CSDN以保障网站的权益;请务必注明文章作者为刘铁猛(http://blog.csdn.net/FantasiaX ),并向liutm@beyondsoft.com发送邮件,标明文章位置及用途。转载时请将此法律声明一并转载,谢谢!

上一篇深入浅出话回调(上)
下一篇C++主题年技巧积累#1——UltraEdit的代码美化

主题推荐
visual studio 知识产权 character pagination 对象

猜你在找
实现基于C++的动态事件机制
模块化设计 代码大全 第六章
VS2005中添加现在文件夹
aspnet GridView设置每一列的对齐方式
Ubuntu 1104下安装SVN图形界面客户端
GCC 与 Makefile
替换应用程序的图标
CListBox & CCheckListBox 使用技巧
Cocos2d-x ccSprite的触摸消息响应 - ccsx教程
c++ 创建文件夹 跨平台

准备好了么? 跳吧 !更多职位尽在 CSDN JOB
软件开发工程师(C++)
苏州敏行医学信息技术有限公司
|
6-10K/月
我要跳槽
Python软件工程师
上海投中商务咨询有限公司
|
10-20K/月
我要跳槽
嵌入式开发工程师(DSP,Linux)
云智视像科技(上海)有限公司
|
10-15K/月
我要跳槽
Python后台开发工程师
上海欢校信息科技有限公司
|
10-20K/月
我要跳槽

查看评论

11楼 kim1212 2009-02-02 16:23发表 [回复]
路过学习

10楼 kim1212 2009-02-02 16:23发表 [回复]
路过学习

9楼 karlzheng 2007-03-22 16:19发表 [回复]
http://community.csdn.net/Expert/topic/5412/5412944.xml?temp=.2220423

8楼 wei801004 2007-01-23 16:04发表 [回复]
到网上下载一份STL源码。

7楼 chhugh 2007-01-21 11:28发表 [回复]
建议楼主看看C++之父的《C++程序设计语言》或其特别版。你将有很大收获!

6楼 Mykonos 2007-01-20 01:51发表 [回复]
共同学习啦。。

5楼 FantasiaX 2007-01-11 10:03发表 [回复]
谢谢楼上的harlyone提醒,我刚刚开始学习C++,那本书刚刚看到第三章。我感觉有时候学习不一定是线性的,向高手请教不失为一种加速学习的捷径。有时候靠翻书要找好久的答案,问一句几分钟就解决了,特别是如果能遇到你这样看过书的高手,还能给出解决问题的知识的出处,那更是再好不过了。
谢谢:)

4楼 harlyone 2007-01-10 23:42发表 [回复]
LZ没看《C++标准程序库—自修教程与参考手册》啊,这书在这个地方讲的很清楚了。

3楼 nevergone 2007-01-10 18:21发表 [回复]
学习!

2楼 quwwnet 2007-01-10 11:50发表 [回复]
路过学习

1楼 yyzhao21 2007-01-10 11:15发表 [回复]
一开始就学stl,,,困难点了吧。。呵呵,不过
endl是函数这个的确很困扰人,用va,每次都提示是endl(),
好久才明白,是函数向函数指针的标准转换。

发表评论

用 户 名:
yu132563

评论内容:
插入代码
  • 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    核心技术类目
    全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack VPN Spark ERP IE10 Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap

    个人资料

    [访问我的空间]
    FantasiaX
    访问:705046次
    积分:9778
    等级:
    排名:第566名
    原创:164篇
    转载:3篇
    译文:0篇
    评论:1673条

    文章搜索

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值