博文

详解C语言的”endl“函数实现(2013-04-26 14:51:00)

摘要:在学习编程的过程中,我觉得不止要获得课本的知识,更多的是解决问题的方法,面对新问题该怎么解决,这样我们才能走在最前方,我是达内的学员,感谢你对本博客的支持; 首先,endl是一个操作符(Manipulators),但我们必须知道endl是一个什么类型的变量。endl是跟在”<<“运算符后面,故endl应该是一个参数。其实endl是一个函数名,它是一个"<<"运算符重载函数中的参数,参数类型为函数指针。下面我们看下内部函数实现。 1 ostream& ostream::operator << ( ostream& (*op) (ostream&)) 2 { 3 // call the function passed as parameter with this stream as the argument 4 return (*op) (*this); 5 } 1 std::ostream& std::endl (std::ostream& strm) 2 { 3 // write newline 4 strm.put('\n'); 5 // flush the output buffer 6 strm.flush(); 7 // return strm to allow chaining 8 return strm; 9 } 可以看出,运算符重载函数中的函数参数为一个函数指针,其指向一个输入输出均为ostream类引用的函数。而endl正是这样一个函数。所以我们在运行"cout<<endl;"语句时,endl是一个函数参数,类型为函数指针。然后会执行”return (*endl) (*this);“语句,即执行endl函数。endl函数输出一个换行符,并刷新输出缓冲区。 这样我们知道在标准库中endl是作为一个函数实现的,显然我们也可以直接调用这一函数。我们看下面的测试程序: 1 #include<iostream> 2 using namespace std; 3 4 int main() 5 { 6 cout<&l......

阅读全文(3779) | 评论:0

整理C++调试常用到的四个窍门笔记(2013-04-15 10:02:00)

摘要:首先,感谢你的阅读,本人观点:学习编程是个漫长的过程并不是一时就会很厉害的,关键是坚持,快乐地学习,在这里分享我的一些笔记给你; 一、C++编程-调试标记 适用预处理#define定义一个或多个调试标记,在代码中把调试部分使用#ifdef和#endif进行管理。当程序最终调试完成后,只需要使用#undef标记,调试代码就会消失。常用的调试标记为DEBUG, 语句序列: 1. #define DEBUG 2. #ifdef DEBUG 3. 调试代码 4. #endif 二、C++编程-运行期间调试标记 在程序运行期间打开和关闭调试标记。通过设置一个调试bool标记可以实现。这对命令行运行的程序更为方便。例如下面代码: 1. #include 2. #include 3. using namespace std; 4. bool debug =false; 5. int main(int argc,char*argv[]) 6. { 7. for(int i=0;i 三、C++编程-把变量和表达式转换成字符串 可是使用字符串运算符来实现转换输出定义 1. #define PR(x) cout<<#x”=”< 四、C++编程-C语言的assert() 该宏在中,,当使用assert时候,给他个参数,即一个判读为真的表达式。预处理器产生测试该断言的代码,如果断言不为真,则发出一个错误信息告诉断言是什么以及它失败一会,程序会终止。 1. #include< assert> 2. using namsapce std; 3. int main() 4. { 5. int i=100; 6. assert(i!=100); 7. //Fails 8. } 9. 当调试完毕后在#include前 10. 加入#define NDEBUG即可消除红产生的代码 11. } 从基础的学习到后面应用提高都非常的系统,无论你是本专业的还是跨专业的,都能有所收获,参加4个月的达内时光转眼已逝,伴随着喜悦,达内给你一个新的平台,一个崭新的开始。 (本文由广州达内为你分享;)......

阅读全文(2846) | 评论:0