C/C++
文章平均质量分 63
GarfieldEr007
这个作者很懒,什么都没留下…
展开
-
《你必须知道的495个C语言问题》知识笔记及补充
1. extern在函数声明中是什么意思?它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,但在extern int f(); 和 int f(); 之间并没有实质的区别。补充:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。也就是说extern有两个作用:...转载 2019-11-24 18:17:40 · 791 阅读 · 0 评论 -
cout的输出格式初探
在C++中,cout代表的是标准输出设备,即显示器,相对于C语言中所使用的printf函数,cout显得更为灵活。下面以30、300和1024三个数为例子,简单说明cout输出时所选格式的输出。cout默认以十进制方式输出数值,也可以设置为八进制(oct)、十六进制(hex)输出方式,同时还可以显示输出方式的基指示符(进制标识符,例如八进制的O,十六进制的Ox)。//设置输出格式#inclu原创 2015-07-08 20:28:38 · 1704 阅读 · 0 评论 -
cout的输出格式初探3
#include #include using namespace std;int main(){ double f=2.0/3.0,f1=0.000000001,f2=-9.9; cout<<f<<' '<<f1<<' '<<f2<<endl; //正常输出 cout.setf(ios::showpos); //强制在正数前加+号 //表示出正负号 cout<<f<<' '<<原创 2015-07-09 09:25:43 · 1138 阅读 · 0 评论 -
C++命名空间namespace
1.namespace的作用命名空间namespace是ANSI C++引入的可以由用户命名的作用域,用来处理程序中常见的重名冲突,不同的命名空间中可以存在名字相同的标识符而不会相互干扰,防止名字污染。 在C语言中定义了3个层次的作用域,即文件(编译单元)、函数和复合语句。C++又引入了类作用域,类是出现在文件内的。在不同的作用域中可以定义相同名字的变量,互不于扰,系统能够区别它们。原创 2015-07-09 10:26:56 · 899 阅读 · 0 评论 -
cout的输出格式初探2
#include #include using namespace std;int main(){ cout<<"Chapter 1"<<endl; cout<<" "; cout.setf(ios::left); //设置对齐方式为left cout.width(7); //设置宽度为7,不足用空格填充 cout<<"1.1"; cout<<"What's C langua原创 2015-07-09 09:21:26 · 1058 阅读 · 0 评论 -
使用if和goto语句构造循环
goto是C/C++中一种非常古老的保留字,goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句配合使用。if语句和goto语句搭配使用可以构造循环,if语句作为循环的条件判断,goto用来跳转以反复执行某些语句(循环体)以达到循环执行这些语原创 2015-07-09 14:41:12 · 7064 阅读 · 0 评论 -
for、while循环及其变体
C/C++中可以使用的循环语句主要有:for、while、do-while、if-goto(见使用if和goto语句构造循环)等方式。其中while和do-while语句差别不大,主要区别在于while是先判断循环条件,如果符合要求则执行循环体;而do-while语句是先执行一次循环体,然后再判断循环条件以确定是否继续执行循环体。这儿有一个例子,采用的是最常用的for循环方法:fo原创 2015-07-09 15:30:59 · 1305 阅读 · 0 评论 -
C++运算符重载(友元函数方式)
我们知道,C++中的运算符重载有两种形式:①重载为类的成员函数(见C++运算符重载(成员函数方式)),②重载为类的友元函数。当重载友元函数时,将没有隐含的参数this指针。这样,对双目运算符,友元函数有2个参数,对单目运算符,友元函数有一个参数。但是,有些运行符不能重载为友元函数,它们是:=,(),[]和->。重载为友元函数的运算符重载函数的定义格式如下:friend 函数类型原创 2015-07-10 11:27:53 · 12196 阅读 · 0 评论 -
C++运算符重载(成员函数方式)
一、运算符重载C++中预定义的运算符的操作对象只能是基本数据类型,实际上,对于很多用户自定义类型,也需要有类似的运算操作。如果将C++中这些现存的运算符直接作用于用户自定义的类型数据上,会得到什么样的结果呢?编译器无法给出正常的结果,因为我们需要运算符重载,给运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为,增强了运算符的普适性。运算符重载的实质是函数重载。原创 2015-07-10 08:57:08 · 4886 阅读 · 0 评论 -
虚函数和作用域(C++ primer 第五版)P550
一、程序#include "stdafx.h"#include "iostream"using namespace std;class Base{public: virtual void fun(){cout<<"Base::fun()"<<endl;}};class Derived1 : public Base{public: void fun(int n){cou原创 2015-08-27 12:58:18 · 1534 阅读 · 0 评论 -
交换函数swap的三种实现方法
本文采用三种方式实现两个数之间的交换,分别是①借助辅助变量temp的swap函数,②采用加减法的swap函数 ,③使用异或运算的swap函数。现在直奔主题:1、借助辅助变量temp的swap函数I、引用类型形参void swap(int &a, int &b) //引用类型方式{ int temp; //辅助变量 temp = a; a = b; b = temp; }原创 2015-09-09 12:55:12 · 20458 阅读 · 2 评论 -
类内成员变量直接初始化小记
Code:#include "iostream"#include "cstdlib"using namespace std;class Test{ public : void setNum(){num5++;} void printNum(){cout<<num4<<" "<<num5<<endl;} //int num1 = 10;原创 2015-10-01 13:04:28 · 1170 阅读 · 0 评论 -
递归求解1~9组成的特殊9位整数
试题描述:1~9的9个数字,每个数字只能出现一次,要求这样一个9位的整数:其第一位能被1整除,前两位能被2整除,前三位能被3整除。。。以此类推,前9位能被9整除。递归解法:#include "iostream"#include "cstdlib"#include "vector"using namespace std;bool used[10] = {false};原创 2015-10-01 12:49:26 · 2606 阅读 · 0 评论 -
空类的sizeof为1
程序:#include "iostream"#include "cstdlib"using namespace std;class A /* 空类 */{ };class B: public A{};struct C{};struct D: public C{};struct E: virtual public C //虚继承 {};原创 2015-10-01 12:56:16 · 917 阅读 · 0 评论 -
类的继承与sizeof
一、程序#include "iostream"#include "cstdlib"using namespace std;class A{ private: //私有成员 int m_data; };class B: private A //私有继承{ private:原创 2015-10-04 12:12:16 · 1001 阅读 · 0 评论 -
自增符号++(自减符号--)带来的部分影响
一、程序#include "stdio.h"#include "stdlib.h"int main(){ int x, a = 1, b = 3, c = 5; x = ++a+b+++c++; int x2, a2 = 1, b2 = 3, c2 = 5; x2 = (++a2)+(b2++)+(c2++); printf("%d %d\n", x, x2原创 2015-10-09 13:08:21 · 2054 阅读 · 0 评论 -
《你必须知道的495个C语言问题》知识笔记及补充
《你必须知道的495个C语言问题》知识笔记及补充1. extern在函数声明中是什么意思?它可以用作一种格式上的提示表明函数的定义可能在另一个源文件中,但在extern int f(); 和 int f(); 之间并没有实质的区别。补充:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外转载 2015-11-17 07:57:33 · 1415 阅读 · 0 评论 -
C++编程思想重点笔记(下)
C++编程思想重点笔记(下)宏的好处与坏处宏的好处:#与##的使用三个有用的特征:字符串定义、字符串串联和标志粘贴。字符串定义的完成是用#指示,它容许设一个标识符并把它转化为字符串,然而字符串串联发生在当两个相邻的字符串没有分隔符时,在这种情况下字符串组合在一起。在写调试代码时,这两个特征是非常有效的。#define DEBUG(X)转载 2015-11-16 14:28:18 · 995 阅读 · 0 评论 -
C++编程思想重点笔记(上)
C++编程思想重点笔记(上)C和C++指针的最重要的区别在于:C++是一种类型要求更强的语言。就void *而言,这一点表现得更加突出。C虽然不允许随便地把一个类型的指针指派给另一个类型,但允许通过void *来实现。例如: bird* b; rock* r; void* v; v = r; b = v;C++不允许这样做,其编译器将会给出一个出错信转载 2015-11-16 14:26:58 · 1000 阅读 · 0 评论 -
Qt安装和QML HelloWord程序
QT Win7开发环境安装配置Qt是一个跨平台应用程序和用户界面框架,使用C + +或者QML,类似CSS和JavaScript开发语言。 它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的,很容易扩展,并且允许真正地组件编程。下载所需开发软件工具:官方网站:http://qt-project.org/downloads/,选择对应版本如下图所示:转载 2015-12-10 13:23:28 · 2564 阅读 · 0 评论 -
编译器的工作过程
源码要运行,必须先转成二进制的机器码。这是编译器的任务。比如,下面这段源码(假定文件名叫做test.c)。#include stdio.h>int main(void){ fputs("Hello, world!\n", stdout); return 0;}要先用编译器处理一下,才能运行。$ gcc test.c$ ./a.outHello,转载 2015-11-24 09:58:46 · 856 阅读 · 0 评论 -
如何学好C语言
有人在酷壳的留言版上询问下面的问题keep_walker:今天晚上我看到这篇文章。http://programmers.stackexchange.com/questions/62502/small-c-projects我也遇到了和提问的老外一样的问题。。能给像遇到这样烦恼的程序员一点建议嘛?谢谢!我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的转载 2015-12-15 12:53:14 · 996 阅读 · 0 评论 -
6个变态的C语言Hello World程序
下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello1.c1234567891011 #define _________ } #define ____转载 2015-12-15 12:54:21 · 1065 阅读 · 0 评论 -
“21天教你学会C++”
下面是一个《Teach Yourself C++ in 21 Days》的流程图,请各位程序员同仁认真领会。如果有必要,你可以查看这个图书以作参照:http://www.china-pub.com/27043看完上面这个图片,我在想,我学习C++有12年了,好像C++也没有学得特别懂,看到STL和泛型,还是很头大。不过,我应该去考虑研究量子物理和生物化学,这样,我才能重返98年杀掉还在大转载 2015-12-15 12:57:32 · 998 阅读 · 0 评论 -
如何学好C++语言
昨天写了一篇如何学好C语言,就有人回复问我如何学好C++,所以,我把我个人的一些学习经验写在这里,希望对大家有用。首先,因为如何学好C语言中谈到了算法和系统,所以这里就只谈C++语言。C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。你千万不要以为几天就可以学好C++,C++的学习曲线是相当BT的,你可以看看这篇文章。C++是一门很自由的语言,自由到了有点BT和恐怖的地步。我转载 2015-12-15 12:59:40 · 978 阅读 · 0 评论 -
【Accelerated C++】重点回顾
看了刘未鹏推荐过的C++入门经典《Accelerated C++》,读此书的过程中一再感叹“大师就是大师,他可以很轻松的把东西的本质呈现在你面前”,这本书采用了现实中与我们很接近的学生成绩信息管理这一例子,层层推进,一步一步引出C++中的知识点,根据任务提出解决方案,让你感受到C++中一些设计的比要性。一下是我读此书时做的笔记,谨用于记忆。第一章、使用字符串1、为什么需要缓转载 2016-01-18 15:41:55 · 1109 阅读 · 0 评论 -
你应当如何学习C++(以及编程)
你应当如何学习C++(以及编程)(rev#1) By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) Javascript是世界上最受误解的语言,其实C++何尝不是。坊间流传的错误的C++学习方法一抓就是一大把。我自己在学习C++的过程中也走了许多弯路,浪费了不少时间。 为什么会存在这么多错误认识?原因主要有三个,一是C+转载 2015-12-17 21:45:11 · 884 阅读 · 0 评论 -
【Accelerated C++】重点回顾(续)
看了刘未鹏推荐过的C++入门经典《Accelerated C++》,读此书的过程中一再感叹“大师就是大师,他可以很轻松的把东西的本质呈现在你面前”,这本书采用了现实中与我们很接近的学生成绩信息管理这一例子,层层推进,一步一步引出C++中的知识点,根据任务提出解决方案,让你感受到C++中一些设计的比要性。一下是我读此书时做的笔记,谨用于记忆。ps:这篇是第二篇,之前的笔记转载 2016-01-19 12:39:35 · 997 阅读 · 0 评论 -
在C++中侦测内嵌型别的存在(rev#2)
在C++中侦测内嵌类型的存在(rev#2) By 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) 动机(Motivation)假设一所大学的注册系统提供了一个注册函数: templateclass T>void Register(T person){Register(person, typename T转载 2015-12-18 11:42:43 · 911 阅读 · 0 评论 -
boost源码剖析之:泛型指针类any之海纳百川(rev#2)
boost源码剖析之:泛型指针类any之海纳百川(rev#2) 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) 动机C++是强类型语言,所有强类型语言对类型的要求都是苛刻的,类型一有不合编译器就会抱怨说不能将某某类型转换为某某类型,当然如果在类型之间提供了转换操作符或是标准所允许的一定程度的隐式转换(如经过非explicit构造函数创建临时变转载 2015-12-18 11:44:25 · 974 阅读 · 0 评论 -
boost源码剖析之:泛型编程精灵type_traits(rev#2)
boost源码剖析之:泛型编程精灵type_traits(rev#2) 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) 动机使用traits的动机一般有三种,分派、效率、使某些代码通过编译。 分派下面有一个模板函数,假设一个动物收容组织提供了它,他们接受所有无家可归的可怜的小动物,于是他们向外界提供了一个函数接受注册。函数看起来像转载 2015-12-18 11:46:56 · 1042 阅读 · 0 评论 -
boost源码剖析之:boost::multi_array
boost源码剖析之:boost::multi_array 谢轩 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) Note: 并非新作,是以前和老朋友谢轩写的,也可以在谢轩的blog上找到。 动机 C++是一门自由的语言,允许你自由的表达自己的意图,对不对? 所以我们既然可以new一个一维数组,也应该可以new出多维数组,转载 2015-12-18 11:48:05 · 1608 阅读 · 0 评论 -
boost源码剖析之:Tuple Types(rev#2)
boost源码剖析之:Tuple Types(rev#2) 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) Note: 并非新作,04年曾放在blog上,后来删掉了,不过网上到处有转载。这是修改之后的版本。 动机[1]假设你有这样一个函数:它接受两个整型数据并返回它们整除的结果,像这样: int Devid转载 2015-12-18 12:24:51 · 886 阅读 · 0 评论 -
boost源码剖析之:泛型函数指针类boost::function(rev#3)
boost源码剖析之:泛型函数指针类boost::function(rev#3) 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) Note: 并非新作,03年曾放在blog上,现在这个版本应该是修改后的最终版本。 前奏如你所知,boost库是个特性完备,且具备工业强度的库,众多C++权威的参与使其达到了登峰造极的程度。尤其泛型的强大威转载 2015-12-18 12:26:10 · 1476 阅读 · 0 评论 -
boost源码剖析之:多重回调机制signal(上)
boost源码剖析之:多重回调机制signal(上) 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) boost库固然是技术的宝库,却更是思想的宝库。大多数程序员都知道如何应用command,observer等模式,却不知该如何写一个支持该模式的类。正如隔靴搔痒,无法深入。DDJ上曾有一篇文章用C++实现类似C#的event机制,不过是个雏形,比转载 2015-12-18 12:28:24 · 1048 阅读 · 0 评论 -
boost源码剖析之:多重回调机制signal(下)
boost源码剖析之:多重回调机制signal(下) 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba) 在本文的上篇中,我们大刀阔斧的剖析了signal的架构。不过还有很多精微之处没有提到,特别是一个遗留问题还没有解决:如果用户注册的是函数对象(仿函数),signal又当如何处理呢? 下篇:高级篇概述在本文的上篇中,我们已经分析了s转载 2015-12-18 12:29:20 · 910 阅读 · 0 评论 -
泛型编程:源起、实现与意义
泛型编程:源起、实现与意义 By 刘未鹏C++的罗浮宫(http://blog.csdn.net/pongba)(去年12月《程序员》的约稿)(以前也写过一篇相关的文章:Generic Programming - What Are You, anyway? ) 为什么泛型泛型编程(Generic Programming)最初提出时转载 2015-12-18 12:33:38 · 855 阅读 · 0 评论 -
C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来)
C++之父元旦专访(8+13个问题,关于C++的学习&使用和未来) By TopLanguage (http://groups.google.com/group/pongba)刘未鹏|C++的罗浮宫 (http://blog.csdn.net/pongba) 临近元旦的一个月,Bjarne在通信中答应接受一次访谈。高兴之余,为访谈的问题犯了难,我不想做成一个转载 2015-12-18 12:35:50 · 1174 阅读 · 0 评论 -
为什么C++(来自C++之父的观点)
为什么C++(来自C++之父的观点) By Bjarne Stroustruphttp://www.research.att.com/~bs/ 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) 注:9月份的时候写了一篇“Why C++”(翻译版见这里)。后来我把文章发给Bjarne,问问他的意见。Bjarne友好的对文章转载 2015-12-18 12:39:51 · 1678 阅读 · 0 评论 -
Why C++
Why C++ 刘未鹏(pongba)C++的罗浮宫(http://blog.csdn.net/pongba) 非常感谢waterwalk翻译了整篇文章,我整理了之后单独贴了出来,见这里。 The ProblemSo, why C++? Before you frown and turn away. Just try to answer this simple qu转载 2015-12-18 12:42:02 · 974 阅读 · 0 评论