文章分类 -  c/c++

摘要:原文链接 首先由一个程序引入话题: 程序的输出结果为: sizeof(st1) is 12 sizeof(st2) is 8 问题出来了,这两个一样的结构体,为什么sizeof的时候大小不一样呢? 本文的主要目的就是解释明白这一问题。 内存对齐,正是因为内存对齐的影响,导致结果不同。 对于大多数的程 阅读全文
posted @ 2017-05-23 10:02 poluner
摘要:原文链接 在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候用它们? 你知道 operator new 和 operator delete 吗? 为什 阅读全文
posted @ 2017-03-28 15:22 poluner
摘要:原文链接 在 C++ 中将 char** 类型传递给形参类型为 const char ** 或 const char * PARAMS[] 时,g++ 会报如下错误: [cpp] view plain copyerror: invalid conversion from 'char**' to 'c 阅读全文
posted @ 2017-03-28 10:20 poluner
摘要:原文链接 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: 指针的类型 从语法的角度 阅读全文
posted @ 2017-03-28 09:47 poluner
摘要:原文链接 C++变量根据定义的位置的不同的生命周期,具有不同的作用域,作用域可分为6种: 全局作用域,局部作用域,语句作用域,类作用域,命名空间作用域和文件作用域。 从作用域看: 1. 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。当然,其他不包含全局变量定义的源 阅读全文
posted @ 2017-03-27 10:58 poluner
摘要:原文链接 1. 在类的构造函数和析构函数中没有匹配的调用new和delete函数 两种情况下会出现这种内存泄露:一是在堆里创建了对象占用了内存,但是没有显示地释放对象占用的内存;二是在类的构造函数中动态的分配了内存,但是在析构函数中没有释放内存或者没有正确的释放内存 2. 没有正确地清除嵌套的对象指 阅读全文
posted @ 2017-03-27 10:43 poluner
摘要:原文链接 首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). 那么显示声明的构造函数和隐式声明的有什么区别 阅读全文
posted @ 2017-03-27 10:13 poluner
摘要:原文链接 模板为什么要特化,因为编译器认为,对于特定的类型,如果你能对某一功能更好的实现,那么就该听你的。 模板分为类模板与函数模板,特化分为全特化与偏特化。全特化就是限定死模板实现的具体类型,偏特化就是如果这个模板有多个类型,那么只限定其中的一部分。 先看类模板: [cpp] view plain 阅读全文
posted @ 2017-03-27 10:02 poluner
摘要:原文链接 在C++中,类的对象建立分为两种,一种是静态建立,如A a;另一种是动态建立,如A* ptr=new A;这两种方式是有区别的。 静态建立一个类对象,是由编译器为对象在栈空间中分配内存,是通过直接移动栈顶指针,挪出适当的空间,然后在这片内存空间上调用构造函数形成一个栈对象。使用这种方法,直 阅读全文
posted @ 2017-03-26 10:52 poluner
摘要:原文链接 引言 在用C++的项目源码中,经常会不可避免的会看到下面的代码: 1 2 3 4 5 6 7 8 9 #ifdef __cplusplus extern "C" { #endif /*...*/ #ifdef __cplusplus } #endif 1 2 3 4 5 6 7 8 9 # 阅读全文
posted @ 2017-03-22 19:34 poluner
摘要:原文链接 前言 C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTT 阅读全文
posted @ 2017-03-22 15:50 poluner
摘要:原文链接 关于引用和指针的区别的文章很多很多,但是总是找不到他们的根本区别,偶然在codeproject上看到这篇文章,觉得讲的挺好的, 所以翻译了下,希望对大家有帮助。 原文地址: http://www.codeproject.com/KB/cpp/References_in_c__.aspx 引 阅读全文
posted @ 2017-03-22 12:08 poluner