- 博客(36)
- 收藏
- 关注
转载 learning makefile 文件
//--------------learning makefile 文件 -----------------------1.一个简单的makefile ### makefile 开始 ### myprog : foo.o bar.o gcc foo.o bar.o -o myprog foo.o : foo.c foo.h bar.h gcc -c foo.c -o foo.o
2006-04-17 21:28:00 1518
原创 《C++ primer》学习笔记之三十五:function overload resolution之三寻找最佳函数,及常见编译错
3 寻找最佳函数(Best Viable Function): 在可行集合中寻找最佳函数,这一步的判断条件是: 1. The conversions aplied to the arguments are no worse than the conversions necessary to call any other viable function. 2. The
2006-04-14 01:51:00 2003
原创 《C++ primer》学习笔记之三十四:function overload resolution之二寻找可行函数集合
2.寻找可行函数集合(Viable Function Set):这一步的判断条件是函数参数是否匹配。 "匹配"指调用函数使用的参数是否完全符合或者经过转换后完全符合函数的定义的参数。 a) exact match: 有下面四种形式 1)Lvalue-to-rvalue rvalue-to-Lvalue:特别注意不要与reference initialize混淆。 ref
2006-04-14 01:51:00 1491
原创 《C++ primer》学习笔记之三十三:function overload resolution之一寻找候选函数集合
1.寻找候选函数集合(Candidate Function Set):这一步的判断条件只有一个,即是否同名。 函数调用肯定在另一个函数定义中: void caller() { T t; //T为任意类型,可为内建类型 f(t); //找到函数f的定义 } a)在caller中调用f前声明的同名函数: 比如: namespace N { v
2006-04-14 01:49:00 1616
原创 《C++ primer》学习笔记之三十二:function overload resolution概述
function overload resolution (注意这里的function不是类的成员) hidden: 两个scope,外面的叫"外scope",内面的叫"内scope",则对内scope内的函数调用来说,内scope内定义的函数会hidden外scope内定义的函数(既使参数不同也会hidden)。 overload:同一个scope内,有相同名字不同规格(主要是参数不同)的函数就
2006-04-14 01:48:00 1196
原创 《C++ primer》学习笔记之三十一:stack
The traditional data structure for "placing something somewhere for later retrievual" is a stack.
2006-04-14 01:46:00 1456
原创 《C++ primer》学习笔记之三十:explicit constructor
explicit constructor: explicit关键字用来修饰构造函数,使之不能参加隐式转换。 对上面的例子: class T { public: explicit T(){} //没有效果。因为default constructor不会参加隐式转换 explicit T(int i){} //good explicit T(int i, double){
2006-04-14 01:44:00 4803
原创 《C++ primer》学习笔记之二十九: 当copy constructor遇到operator=
当同时有copy constructor和operator= overload时,各自的调用时机: class T { public: T(){} //default constructor T(int i){} T(T const &t){} //copy constructor T& operator=(T const &t){} //operator = ~
2006-04-14 01:42:00 1484
原创 《C++ primer》学习笔记之二十八:类点滴,记录琐碎的类的语法或注意事项
类点滴: 1.0 const和引用成员数据必须在initailize list中初始化,在constructor中都不行。 也不能在声明处初始化(只有static const可以), 1. 在const成员函数中,可以访问member data,但member data都有const属性,试图去改变他们的值会导致编译错: error C2166: l-value specifies cons
2006-04-14 01:41:00 1679 1
原创 《C++ primer》学习笔记之二十七:当模板参数是另一个模板类的实例时写法要注意
5. 当模板参数是另一个模板类的实例时,写法要注意: vector> text; //error.如果后面两个>>连着写就会出现这个错 vector > text2; //ok. vector > text3; //ok.推荐
2006-04-14 01:39:00 1206
原创 《C++ primer》学习笔记之二十六:None-type template parameter
4.Nonetype template parameter:即不代表类型的模板参数。此参数和真正的函数参数很像。 template //此处的size即为Nonetype template parameter T* f() { T aryT[size]; //注意这句:只有编译期常量可以作数组定义的长度 for( int i = 0; i { ar
2006-04-14 01:37:00 1280 1
原创 《C++ primer》学习笔记之二十五:template function 的实例化
2.何时实例化: (1).遇到一个函数调用或取函数地址,如果在普通函数定义中找到了匹配的定义,那么直接用普通的函数 如果遇到显式实例化,那么直接跳到第(3)步 比如: //te.cpp void f(int i){ cout f(2); //这个调用不会引起实例化template_function //必须是精确匹配,不需要隐含的转换。下面这个不是精确匹配
2006-04-14 01:35:00 1480
原创 《C++ primer》学习笔记之二十四:template function 的定义
template function 的定义和使用: 1. //定义一个function template //te.h template void f(T t); //声明一个function template。 typename T 叫template parameter template //定义一个function template void f(T t){ cout
2006-04-14 01:32:00 1227
原创 《C++ primer》学习笔记之二十三: namespace的定义和使用
namespace的定义和使用: 1. //定义一个namespace common: //in common.h namespace common { void fOfCommon(); //声明函数,但不定义 void gOfCommon(); //声明函数 } //in common.cpp namespace common { void fOfCommo
2006-04-14 01:29:00 8323 2
原创 《C++ primer》学习笔记之二十二: 函数指针
函数指针: void f(){} void (*pf)() = f; //指向函数f的指针 void (*pf2)() = &f; //&操作符可有可无 (*pf)(); //调用函数f() pf(); //像普通的函数调用一样 //另外一种更好的方法,用typedef将函数的指针的定义分为几步 typedef void (dclFun)(); //dclFun相当于一个函数
2006-04-14 01:27:00 1044
原创 《C++ primer》学习笔记之二十一:有趣的变参函数
有趣的变参函数: ascii中用宏:va_list, va_arg, va_start, va_end 四个宏来实现参数变化的函数,估计其原理是: 调用函数时,传入的参数在栈中按(高地址——〉低地址,最后一个参数——〉第一个参数)排列,知道第一个参数的地址, 那么只需要顺序地知道各个参数的类型就可以取出各个参数的值。 例如: #include void f(int first, int se
2006-04-14 01:25:00 1263
原创 《C++ primer》学习笔记之二十:引用详解1、2、3
19.1 当引用定义完毕后,它就是另外一个变量的别名,以后使用变量和使用变量的别名效果一样。 int i = 1; int &ri = i; i = 2; cout ri = 3; cout 19.2 当函数的参数为引用时: 1. 最简单的情况: void f(int &i) { cout int main() { f(1); //error: 无法将参数1从int转为in
2006-04-14 01:22:00 1000
原创 《C++ primer》学习笔记之十九:奇怪的数组引用
数组的引用很奇怪,定义该引用时必须知道数组的大小,比如: int ary; //compile error:数组大小未知 int ary0[0]; //compile error:数组大小未知 int ary2[2]; //ok. int (&ary0R)[]; //error:对零大小的数组的引用非法。 int (&ary2R)[] = ary2; //error:对零大
2006-04-14 01:19:00 985
原创 《C++ primer》学习笔记之十八:vc的常用快捷方式
ctrl + K(F) 快速格式化选定的文本 F10 step debug F11 step into debug ctrl + K , ctrl + u 取消选定文本的注释 ctrl + K , ctrl + c 注释选定的内容
2006-04-14 01:18:00 942
原创 《C++ primer》学习笔记之十七:查看vc的c++标准库的结构
查看vc的c++标准库的结构: 普通情况下,VC只显示本project下的函数/类的结构。 对标准库中的文件,虽然可以看到它的源码(实际上是个头文件),却看不到结构。 VC中可以将标准库的头文件加入到本project中来,这样就可以看文件的结构了:打开vector文件, 这个头文件中定义了class vector,右键菜单中有个选项是"将vector加入到项目",加入后在类视图中会显示vecto
2006-04-14 01:16:00 1027
原创 《C++ primer》学习笔记之十六: typedef的奇怪的用法
typedef的奇怪的用法: template class S{ typedef typename T::iStack sIStack; //这里的typename甚是奇怪 } 由于参数类型T是未知的类型,所以语句"typedef typename T::iStack sIStack;"中关键字typename指示iStack为T中定义的一个类型。
2006-04-14 01:14:00 979
原创 《C++ primer》学习笔记之十五:四个cast
四个cast的形式:T t = xx_cast(expression) 不要忘了expression要用括号隔开,不向sizeof const_cast: 去掉const修饰,即用来将指向const对象的指针转为指向普通对象的指针 T t; T const * const_pt = &t; T *pt = const_pt; //error T *pt2 = const_cas
2006-04-14 01:12:00 1442
原创 《C++ primer》学习笔记之十四:c-style字符串的长度算‘/0’在内
char str[] = "123456"; int i = sizeof(str) / sizeof(*str); //i==7
2006-04-14 01:09:00 821
原创 《C++ primer》学习笔记之十三:一段很好看的c++代码,由此得出的编程风格
一段很好看的c++代码,编程风格: if ( (AccountId == NULL) || (AccountId == "") || (ServerSesion["AccountId"] == NULL) || (ServerSesion["AccountId"] == "") ) { //open session logs FileHandle file = f_open(LOG
2006-04-14 01:07:00 1194
原创 《C++ primer》学习笔记之十二:const在"="表达式中
const在"="表达式中: int i = 0; class A{}; A a; //由于=操作符一般会产生新对象,所以下面的两个语句很正常 int const j = i; A const b = a; //b与a为一个不同的对象 A c = b; //c与b,a为一个不同的对象
2006-04-14 01:05:00 760
原创 《C++ primer》学习笔记之十一:const的放置位置
const double d = 9.1; double const d2 = 9.2; //const放double后或double前效果一样 double d3 const = 9.3; //error.不能放在变量名后。const修饰函数名时可以放在函数名后。 const double *dp = &d; //dp为一个指针,指向一个const double。 赋值
2006-04-14 01:03:00 1364
原创 《C++ primer》学习笔记之十:当char字符常量中含多个字符时
10.1 当字符常量中含多个字符时: char c2 = char c3 = ; //编译错:字符常量中含太多字符 cout c2虽可以通过编译,但输出时却有错。估计是宽字符影响的编译。 当
2006-04-14 01:01:00 1189
原创 《C++ primer》学习笔记之九:字符 char与宽字符wchar_t
10 宽字符: char c = e; //a ascii character wchar_t wc = Le; //a wide character char &str = "efg"; //a string wchar_t wstr = L"efg"; //a wide string wchar_t wc2 = e; //a wide character //output:[e
2006-04-14 00:59:00 1128
原创 《C++ primer》学习笔记之八:特殊字符
特殊字符:用cout /a //bell,ascII值为7些为 /7也可以 / //转行符,如果字符串太长,可以在最后加转行符,比如 char * s = "12345/
2006-04-14 00:58:00 1025 2
原创 《C++ primer》学习笔记之七:常见编译错
8 常见编译错: 1. 如果一个const对象访问一个非const成员函数会报错:C2662: “Example2::print” : 不能将“this”指针从“const Example2”转换为“Example2 &” msdn的解释:Invoking a non-const member function on a const object. 4. 在函数定义之前调用函
2006-04-14 00:56:00 2640
原创 《C++ primer》学习笔记之五:奇怪的控制台输入:cin
奇怪的控制台输入:cin int n = 0; int i = 0; while(1){ cin >>n; cout cout if(i>=3) break; } 在控制台输入:98 45 76 46 67 回车 输出:98 45 76显然while循环第一次时它等待控制台输入,但第二次/第三次就好像自动得到输入了,难道从缓存中得到输入的?
2006-04-14 00:52:00 1022
原创 《C++ primer》学习笔记之四:用define指令定义的常量的值做变量名
#define指令定义的常量的值可以做变量名: #define pre(x) my##x int main(){ int pre(Int) = 1; char pre(String)[] = "a String"; cout } 输出:11a Stringa String 说明变量myInt是定义了的。 说明宏在编译前作了替换。
2006-04-14 00:41:00 1262
原创 《C++ primer》学习笔记之三:内置宏__LINE__,__FILE__
4. __LINE__为本宏在文件中出现的行数: 不管文件为header还是cpp文件,不管出现的行是否是一个完整的句子。 比如: cout cout __FILE__为本宏所在的文件,不管文件为header还是cpp文件 __TIME__ 和__DATE__ 为编译时的时间: __TIMESTAMP__ The date and time of the last mod
2006-04-14 00:38:00 2104
原创 《C++ primer》学习笔记之二:vc7编译的参数
1. /D "DEB" 或者不要空格符 /D"DEB" 或者不要引号 /DDEB 设置预定义变量,与程序中使用#define DEB一样 2. /I"header" 设置额外的查找inc file的目录这个可以在项目的编译设置中加上去。
2006-04-14 00:35:00 833
原创 《C++ primer》学习笔记之一:#include如何寻找头文件
include: 如何寻找include指令指定的file(inc file)头文件实际的目录结构如下: ----len //目录下有文件 be.cpp 和 be.h, ce.h,及一个子文件夹inc |----inc //目录下有文件common.h预编译器按下面的步骤依次寻找: 1.在包含include语句的文件(该文件叫头文件的parentFile)所在的目录找:
2006-04-14 00:29:00 2512 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人