C/C++
Hi-Lu
这个作者很懒,什么都没留下…
展开
-
结构体定义容易混淆的地方
第一种:struct Student{ ... ...};Student为结构体名,相当于一种数据类型。可以和int、char等一样的用法。这种形式用在C语言中,要声明该结构体类型的对象,应该写为struct Student stud1;这种形式用在C++语言中,要声明其对象,直接写Student stud1;第二种:typede原创 2014-01-14 16:26:40 · 641 阅读 · 0 评论 -
宏的二次展开
原文:点击打开链接macro body 展开过程 先进行# stringified操作,再对参数进行替换, 最后执行## pasted 操作。 Simple scan 和 Twice scanobject-like宏 和 function-like但没有参数的宏,或macro body 有 #(stringified ) or ##(pasted) 的macro转载 2014-04-24 10:47:53 · 1346 阅读 · 0 评论 -
局部变量的指针和局部指针变量是两个不同概念
1.局部变量的指针和局部指针变量是两个不同概念2.局部变量在函数体结束后生命期也结束,它的指针(即它的地址)是无效变量的地址,所以函数不能返回这种地址值3,局部指针变量在函数结束后生命期也结束,但它指向的变量或函数或任何存储实体的生命期没有结束,函数返回的指针(地址)就是有效的例1:int *func(){ int x; ... return &x;/*原创 2014-04-23 16:38:03 · 4253 阅读 · 1 评论 -
static 函数和变量
转载自static 声明的变量在C语言中有两方面的特征: 1)、变量会被放在程序的全局存储区中,这样可以在下一次调用的时候还可以保持原来的赋值。这一点是它与堆栈变量和堆变量的区别。 2)、变量用static告知编译器,自己仅仅在变量的作用范围内可见。这一点是它与全局变量的区别。Tips: A.若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以降转载 2014-04-24 15:31:18 · 458 阅读 · 0 评论 -
C++中属于整个类的的常量
转载自http://www.cnblogs.com/this-543273659/archive/2011/08/02/2125020.html#commentform由于#define 定义的宏常量是全局的,不能达到目的,于是想当然地觉得应该用 const 修饰数据成员来实现。const 数据成员的确是存在的,但其含义却不是我们所期望的。const 数据成员只在某个对象生存期内是常量转载 2014-04-27 11:47:45 · 573 阅读 · 0 评论 -
typedef
不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己写的内容)。用途一:定义一种类型的别名,而不转载 2014-05-21 16:57:24 · 428 阅读 · 0 评论 -
C++中的虚函数,多态,覆盖隐藏重载
今天上网看C++的一些资料,突然看到虚函数,突然让我回想起继承,覆盖什么的,决定总结一些资料,加上自己的体会写一篇 C++中的虚函数(virtual function) 虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。假设我们有下面的类层次: class A{public:virtual void foo()转载 2014-06-26 16:01:02 · 881 阅读 · 0 评论 -
c++中的protected 说明
在没有继承的情况下,protected跟private相同。在派生类的时候才出现分化。上面那段英文前两条都很好理解,基类对象不能访问基类的protected成员,派生类中可以访问基类的protected成员。也就是说private成员是不能被继承的,只有public,protected的成员才可以被继承。就是最后一条有些迷惑人,派生类对象如果要访问基类protected成员只有通过派生类对原创 2014-06-26 14:50:12 · 4688 阅读 · 1 评论 -
C++ static char THIS_FILE[] = __FILE__
C++ static char THIS_FILE[] = __FILE__;__FILE__为预编译器常量,返回当前编译的文件名,还有比较常用的几个预编译器常量,__LINE__编译器在编译的文件的第几行;__DATE__返回当前的日期Jul-20-2004;__TIME__返回当前的时间hh:mm:ss; __TIMESTAMP__的预定义的编译器宏始终返回时间戳信息转载 2014-05-15 09:46:11 · 2162 阅读 · 0 评论 -
c语言中的函数可变参数列表相关的三个宏
在stdarg.h头文件中原创 2014-04-23 10:37:12 · 555 阅读 · 0 评论 -
C++全局变量之extern和static
转载自:http://blog.csdn.net/candyliuxj/article/details/7853938?reload(1)编译单元(模块) 在VC或VS上编写完代码,点击编译按钮准备生成exe文件时,编译器做了两步工作:第一步,将每个.cpp(.c)和相应的.h文件编译成obj文件;第二步,将工程中所有的obj文件进行LINK,生成最终.exe文件。转载 2014-02-20 15:56:15 · 658 阅读 · 0 评论 -
static作用(修饰函数、局部变量、全局变量)
转载自http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。(1)先来介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源转载 2014-02-20 17:11:36 · 525 阅读 · 0 评论 -
智能指针类HasPtr
智能指针是存储指向动态分配对象指针的类,用于控制对象的生存期,能够确保自动正确的销毁动态分配的对象,防止内存泄露。 HasPtr 在其他方面的行为与普通指针一样。具体而言,复制对象时,副本和原对象将指向同一基础对象,如果通过一个副本改变基础对象,则通过另一对象访问的值也会改变。 HasPtr 类需要一个析构函数来删除指针,但是,析构函数不能无条件地删除指针。如果两个 HasPt原创 2014-03-26 16:01:28 · 600 阅读 · 0 评论 -
关于Vector中存放指针的问题
关于Vector中存放指针的问题,在进行清空的时候比较安全的一种做法是: std::vector ClassNameVec; ...push_back(new ClassName()); std::vector::iterator ClassNameIt = ClassNameVec.begin(); for(;ClassNameIt != ClassNam转载 2014-03-26 12:38:51 · 2576 阅读 · 0 评论 -
likely与unlikely
likely与unlikely互换或不用都不会影响程序的正确性,只是可能会影响程序的效率。if(likely(x)) //认为x通常为1if(unlikely(x)) //认为x通常为0原创 2019-01-10 14:34:08 · 4642 阅读 · 0 评论