##表示:把宏参数名与宏定义代码序列中的标识符连接在一起,形成一个新的标识符#define test1(i) test(x##i) int main()
{ int x1=1, x2=2, x3=3; test1(1); // 相当于 test(x1) test1(2); // 相当于 test(x2) test1(3); // 相当于 test(x3) return 0;
} 高级语言写多了,其实不推荐使用c++中的宏http://www.waitingfy.com/archives/1763版权声明:本文为博主原创文章,未经博主...
CString常用方法简介 作者:webmaster 出处:无 CString::Compareint Compare( LPCTSTR lpsz ) const;返回值 字符串一样 返回0 小于lpsz 返回-1 大于lpsz 返回1 区分大小字符 CString s1( "abc" );CString s2( "abd" );ASSERT( s1.Compare( s2 ) == -1 );ASSERT( s1.Compare( "abe" ) == -1 ); CString::CompareNoCaseint CompareNoCase( LPCTSTR lpsz ) const;返回值 字符串一样 返回0 ...
既然是队列那么先要包含头文件#include <queue>, 他和queue不同的就在于我们可以自定义其中数据的优先级, 让优先级高的排在队列前面,优先出队优先队列具有队列的所有特性,包括基本操作,只是在这基础上添加了内部的一个排序,它本质是一个堆实现的 和队列基本操作相同: top 访问队头元素 empty 队列是否为空 size 返回队列内元素个数 push 插入元素到队尾 (并排序) emplace 原地构造一个元...
const对象、指向const对象的指针、const指针(通过一个面试题来了解) 1.const对象 (1)关于const,很多企业的笔试、面试都会出现,很简单,就问你“const的含义?”。我不清楚大家的回答,我的第一反应是常量,然后我想到了C#中关于const的解释(static and read-Only),于是我想到了只读,我只想到这么多。看一下答案吧:答:我只要一听到被面试者说:“const意味着常数”,我就知道我正在和一个业余者打交道。去年Dan Saks已...
1. //在C++中typename一般用来声明模板的模板参数(template parameter):template<typename T> class X; //T是一个模板参数2. /*但是还有一个关键的用法。首先是两个概念:1). qualified name例如:std::cout, std::endl;这样含有作用域符号(::)的就是限定名,当我们用using声明将cout,endl引入到当前作用域之后就可以直接使用这两个名称,这个时候cout,endl就不是限定名了。2). dependent namedependent name是依赖于模板参数的类...
1.const用于修饰普通变量,表示常量,不建议修改,某种程度上不允许修改(其实也是可以修改的) 指针常量 :指针(指向的变量的值)自身是一个常量,说明不能改变自身的指向 int* const p=&a; 常量指针 :指向常量的指针,指针可以修改指向 但是不能修改指向的变量的值 const int* p;面试必杀技: const出现在*的左边 是常量指针 const int num = 19; const int * p = #//指向常量的指针常见的面试题中,经常会拿如下的例子来糊...
1. C++中的explicit C++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。 C++中, 一个参数的构造函数(或者除了第一个参数外其余参数都有默认值的多参构造函数), 承担了两个角色。 1 是个构造器 ,2 是个默认且隐含的类型转换操作符。 1class Test12{3public:4 Test1(int n)5 {6 num=n;7 }//普通构造函数 8private:9i...
一、explicit作用: 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。二、explicit使用注意事项: explicit 关键字只能用于类内部的构造函数声明上。 explicit 关键字作用于单个参数的构造函数。 在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换 参考博客:http://www.cnblogs.com/this-543273...
第一篇:typedef struct与struct的区别1. 基本解释typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef & 结构的问题当用下面的代码定义一...
转载自http://c.biancheng.net/view/1345.html 虽然可以使用 cin 和 >> 运算符来输入字符串,但它可能会导致一些需要注意的问题。
当 cin 读取数据时,它会传递并忽略任何前导白色空格字符(空格、制表符或换行符)。一旦它接触到第一个非空格字符即开始阅读,当它读取到下一个空白字符时,它将停止读取。以下面的语句为例:cin >> namel;可以输入 "Mark" 或 "Twain",但不能输入 "Mark Twain",因为 cin 不能输入包含嵌入空格的字...
vector的定义vector<typename> name; 相当于定义了一个一维数组name[SIZE],只不过其长度可以根据需要进行变化,比较节省空间,通俗来讲,vector就是“变长数组”。 类似于一维数组,typename可以是任何基本类型,也可以是STL容器。vector<int> name;
vector<double> name;
vector<char> name;
vector<Node> name; //Node为结构体类型
vector<vector<int> > name;vector容器内元素的访问 vector可以通过下标和迭代器来...
CStringList类成员
?构造CStringList构造一个空的CString对象列表首/尾访问GetHead返回此列表(不能是空的)中头部的元素GetTail返回此列表(不能是空的)中尾部的元素操作RemoveHead从列表的头部删除元素RemoveTail从列表的尾部删除元素AddHead在列表的头部添加一个元素(或者是另一个列表中的所有元素),即产生一个新的头部AddTail在列表的尾部添加一个元素(或者是另一个列表中的所有元素),即产生一个新的尾部RemoveAll删除此...
重载运算符 标准库function的用法问题:int(int, int)算不算一种比较通用的类型??比如函数: int add(int a, int b);比如lambda:auto mod = [](int a, int b){return a % b};比如函数对象类:int operator()(int a, int b);上面3个的共同特征就是:int(int, int),但是如何让上面的3种形式变成共同的的呢???答案:使用function类。std::function<int(int, int)> f1 = add;
std::function<int(int, int)> f2 = mod;
std::func...
万一老师的《如今, Delphi 的多线程已经很易用了!》讲到了TThread.CreateAnonymousThread用法如今我来讲在c++ builder使用?CreateAnonymousThread。? 要说明的是,c++ builder不能直接照搬Delphi的代码。由于CreateAnonymousThread使用的是Dephi 匿名函数/过程指针。?1、方法一? 官方论坛谈到用method_cast,但我看过method_cast实现(https://forums.embarcadero.com/thread.jspa?threadID=72457),用到Boost这些东东,姑且不说能...
说实话我对C++语言不是很懂,更谈不上对用法的了解了。我一看到C++大量的英文组合就头疼,每次上课也只是一知半解。我就像以下图片中的人一样,老师上课讲,我在下面昏昏欲睡。 如:Lab Exercise — Overloading printArray①#include <iostream>using std::cout;using std::endl;template< typename T >void printArray( const T *array, int count ){for ( int i = 0; i < count; i++ )cout << array[ i ] << " ";cout << endl;...