C++语法基础
文章平均质量分 72
zhu2695
Coding life....
展开
-
BOOL 和 bool 的区别
BOOL和bool的区别一、 1、类型不同 BOOL为int型 bool为布尔型 2、长度不同 bool只有一个字节 BOOL长度视实际环境来定,一般可认为是4个字节 3、取值不同 bool取值false和true,是0和1的区别 BOOL取值FALSE和TRUE,是0和非0的区别 二: bool是标准C++数据类型,可取值true和false。转载 2013-06-22 17:09:55 · 868 阅读 · 0 评论 -
C++续行符(反斜杠符号)
参考一:由于最近好几次碰到反斜杠,不明白是什么意思,后来查了下,原来用的较多的是作为强制换行符,衔接上下两行的意思。有时候一个语句太长,一行写不下,或者显得不美观,为了便于阅读,可以将较长的语句拆分成两行甚至多行,除了最后一行之外,在每一个分行后面加一个反斜杠“\”,这样编译的时候,系统会自动将这几个分行读成一个语句处理。比如:1) 用在宏定义中:#define CV_ARE_SI转载 2013-06-22 19:09:40 · 6951 阅读 · 0 评论 -
typedef & #define 的区别
参考一:在C/C++中,我们平时写程序可能经常会用到typedef关键字和#define宏定义命令,在某些情况下使用它们会达到相同的效果,但是它们是有实质性的区别,一个是C/C++的关键字,一个是C/C++的宏定义命令,typedef用来为一个已有的数据类型起一个别名,而#define是用来定义一个宏定义常量。下面谈谈两者在实际使用中应当注意的地方。1.typedef关键字 typ转载 2013-04-04 12:16:20 · 566 阅读 · 0 评论 -
【转载】C++文件操作详解(ifstream、ofstream、fstream)
【转载】C++文件操作详解(ifstream、ofstream、fstream)C++ 通过以下几个类支持文件的输入输出:ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstream: 可同时读写操作的文件类 (由iostream引申而来) 打开文件(Open a file)转载 2013-06-25 16:20:08 · 771 阅读 · 0 评论 -
sizeof(someClass) 的值
#include using namespace std;class CNull{};class CBase{public: virtual void DoSometing(){};};class CDerivedA: public CBase{public: virtual void DoSometing(){};};class原创 2013-06-25 22:36:21 · 609 阅读 · 0 评论 -
在 C/C++ 语言中特定的宏,如 __FUNCTION__
__FILE____LINE____DATE____TIME____FUNC__ __FUNCTION__ 在Visual Studio 2005中,默认情况下,此特性是激活的,但不能与/EP和/P编译选项同时使用。请注意在IDE环境中,不能识别__func__ ,而要用__FUNCTION__ 代替。Comeau的用户也应使用 _转载 2013-08-21 16:55:52 · 729 阅读 · 0 评论 -
C++ 匿名枚举
匿名枚举enum { value = 0 , value2 = 1};enum { value3 = 2};刚看到时候有些奇怪,经过考察,他的功能等价于静态常成员变量, struct IsCustomUnsignedInt { enum { value = 0 , value2 = 1}; enum { value3 = 2};转载 2013-08-21 17:11:49 · 1954 阅读 · 0 评论 -
C++字符串:string and wstring的区别
C++字符串:string and wstring的区别,非常重要!!!!请看下面代码:wstring s=L"abc,?重庆大学机械传动国家重点实验室,重庆,400044"; string s1="abc,?重庆大学机械传动国家重点实验室,重庆,400044";cout cout输出结果为:可以看出在宽字符串模式下:一个全角字符和一个半角字符占有的计数转载 2013-09-25 14:31:46 · 1467 阅读 · 0 评论 -
虚基类(virtual base class)
声明虚基类的一般形式为:class 派生类名 : virtual 继承方式 基类名经过这样的声明后,当基类通过多条派生路径被一个派生类继承时,该派生类只继承该派生类一次,也就是说,基类成员只保留一次。为了保证虚基类在派生类中只继承一次,应当在该基类的所有直接派生类中声明为虚基类,否则仍然会出现对基类的多次继承规定:在最后的派生类中不仅要负责对其直接基类进行初始化,还转载 2016-08-23 11:47:29 · 1008 阅读 · 0 评论 -
有关C/C++指针的经典面试题
参考一:有关C/C++指针的经典面试题 C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的...0.预备知识,最基础的指原创 2016-08-23 13:19:59 · 9009 阅读 · 1 评论 -
关于C++类的默认生成函数
初始化对象数组的方案是,首先使用默认构造函数来创建数组元素,然后花括号中的构造函数将创建临时对象,然后将临时对象的内容拷贝到相应的元素中。因此,要创建类对象数组,则这个类必须有默认构造函数。 C++提供的默认拷贝构造函数和默认赋值函数工作的方法是:完成一个成员一个成员的拷贝,如果成员是类对象,则调用其拷贝构造函数或者默认拷贝构造函数。默认拷贝构造函数执行的是浅拷贝(“位拷贝”而非“值拷贝”转载 2013-06-12 20:19:51 · 733 阅读 · 0 评论 -
string的size()和length()
C++标准库中的string中两者的源代码如下: size_type __CLR_OR_THIS_CALL length() const { // return length of sequence return (_Mysize); } size_type __CLR_OR_THIS_C转载 2013-05-10 10:38:28 · 1029 阅读 · 0 评论 -
_stdcall & _cdecl & _fastcall
参考一:(1) _stdcall调用 _stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。 WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题: #define WINAPI _stdcall 按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,转载 2013-04-04 13:36:16 · 533 阅读 · 0 评论 -
C++中的大括号{}
在C/C++中大括号指明了变量的作用域,在大括号内声明的局部变量其作用域自变量声明始,到大括号之后终结。我们应该善用它,使我们的程序更加清晰明白。尤其是在有许多形式重复的代码的程序段中,以下是一个伪代码例子:void MyProcess(MyType input, MyType & output){ MyType filter = input; { MyTyp原创 2013-04-05 23:28:00 · 22902 阅读 · 0 评论 -
结构体中的 位域操作
#include using namespace std;typedef unsigned char u_char;struct tagControl{ u_char fc_subtype : 4; u_char fc_type : 2; u_char fc_protocol_version : 2; u_char fc_order :原创 2013-04-14 20:42:48 · 912 阅读 · 0 评论 -
C++中的 友元函数、友元类
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元函数:(1)运算转载 2013-04-25 23:17:06 · 760 阅读 · 0 评论 -
基类、子类、数据成员类对象三者 构造函数 的调用顺序
构造函数的调用顺序:基类 --> 数据成员类对象(基于声明的顺序) --> 子类;析构函数的调用顺序则相反。 #includeusing namespace std;class human{public: human(int height=0, int weight=0) { this->m_nHeight=height;转载 2013-04-17 23:14:43 · 1625 阅读 · 0 评论 -
inclue <string> 和 include <string.h>
两段代码:1、#include void main(){string aaa = " abcsd d " ;printf( " looking for abc from abcdecd %s\n " ,(strcmp(aaa, " abc " )) ? " Found " : " Not Found " );}不能正确执行,提示说是string类型没有定义2、#转载 2013-04-21 13:33:27 · 1009 阅读 · 0 评论 -
override函数的返回值也必须一致
/**结论:派生类override基类的虚函数时,函数的返回值也必须一致。*/#include using namespace std;class CBase{public: virtual void Func(){ cout<<"CBase::Func()...."<<endl; }};class CDerived: public CBase{原创 2013-04-21 21:58:55 · 2285 阅读 · 1 评论 -
C++ 四种类型转换运算符详解
C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 const_cast,字面上理解就是去const属性。 static_cast,命名上理解是静态类型转换。如int转换成char。 dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类型转换。 reinterpreter_cast,仅仅重新解释类型,但没有进行二进制的转换。原创 2013-03-13 23:08:48 · 906 阅读 · 0 评论 -
对象数组与构造函数
参考一:定义对象数组时,数组中的各个元素需要构造函数来初始化。数组能否定义成功,关键在于每个元素都有合适的构造函数,默认构造函数并不是必须的。 1.动态对象数组,对象所属类型必须有public默认构造函数.2.静态对象数组(1)没有提供初始化式的元素将调用默认构造函数来初始化(2)提供初始化式的构造函数将调用相应的构造函数#include using namespa转载 2013-04-21 21:31:21 · 2833 阅读 · 0 评论 -
C/C++中二级指针的理解
以前在学习数据结构的时候一直没弄懂函数参数里面传递 ** p 以及使用 &的含义,这里摘抄了一小段文章方便理解。不懂的时候再看看这几段代码。指针参数是如何传递内存的? 如果函数的参数是一个指针,不要指望用该指针去申请动态内存。见如下例子:void GetMemory(char *ip, int num){ ip = (char *)malloc(sizeof(char)转载 2013-05-04 13:10:22 · 989 阅读 · 0 评论 -
C++虚函数与纯虚函数的区别
什么是虚函数?那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。虚函数声明如下:virtual ReturnType FunctionName(Parameter);虚函数必须实现,如果不实现,编译原创 2016-08-23 16:03:13 · 478 阅读 · 0 评论