C++
lanmolei814
这个作者很懒,什么都没留下…
展开
-
C++动态分配内存new delete
动态内存分配1.堆内存分配 :C/C++定义了4个内存区间:代码区,全局变量与静态变量区,局部变量区即栈区,动态存储区,即堆(heap)区或自由存储区(free store)。堆的概念:通常定义变量(或对象),编译器在编译时都可以根据该变量(或对象)的类型知道所需内存空间的大小,从而系统在适当的时候为他们分配确定的存储空间。这种内存分配称为静态存储分配;有些操作对象只在程序转载 2014-08-27 22:32:17 · 1391 阅读 · 0 评论 -
STL中vector、list、deque和map的区别
1 vector 向量 相当于一个数组 在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即capacituy()函数返回的大小,当超过此分配的空间时再整体重新放分配一块内存存储,这给人以vector可以不指定vector即一个连续内存的大小的感觉。通常此默认的内存分配能完成大部分情况下的存转载 2014-11-17 23:15:19 · 400 阅读 · 0 评论 -
vector,list,deque,set,map of STL
List封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要转载 2014-11-17 23:16:15 · 304 阅读 · 0 评论 -
换行符‘\n’和回车符‘\r
换行符‘\n’和回车符‘\r’顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 '\n' 10 换行(newline)'\r' 13 回车(return)换行(\n)就是光标下移一行却不会移到这一行的开头,回车(\r)就是回到当前行的开头却不向下移一行.Enter键按下后会执行\n\r这样就是我们看到的一般意义的回原创 2015-01-13 22:20:10 · 541 阅读 · 0 评论 -
C++中的引用与指针的区别及联系
指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元; 引用:跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已 指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小,而void*指针则只表示一个内存地址,编译器不能通过该指针所指向对象的类型和大小,因此想要通过void*指针操作对象必须转载 2015-01-14 22:59:53 · 713 阅读 · 0 评论 -
Ubuntu升级g++-4.8以支持C++11
遇到问题:通过g++ -v命令查看 gcc version 4.8.2 ,该版本已支持C++11,但是使用g++ a.cpp -o a还是提示编译错误,那这篇文章给你答案。C ++ 特性说明:http://gcc.gnu.org/projects/cxx0x.html1. 安装 gcc-4.8 为了使用C++ 11, 须安装 gcc-4.8 以上版本.按以下命令转载 2015-01-19 22:39:50 · 977 阅读 · 0 评论 -
cin 流的状态
1、cin流例子:/* *对用户输入的一组数求和. *不断读取数据直到没有新的输入为止. */int main(){ int sum=0; int val=0; while(std::cin>>val) { std::cout sum+=val; } std::cou原创 2015-01-03 21:57:02 · 571 阅读 · 0 评论 -
C++ Primer 5 练习题答案
最近在学习C ++ ,看C++ primer (第5版),书本没有自带答案,在网上找到相关答案,作为参考。C++ Primer 5 exercise answers.http://dwz.cn/cp5answer原创 2015-01-25 21:52:30 · 925 阅读 · 0 评论 -
C++中四种强制类型转换方式
什么是类型转换? 类型转换的含义是通过改变一个变量的类型为别的类型从而改变该变量的表示方式。为了类型转换一个简单对象为另一个对象你会使用传统的类型转换操作符。C与C++的类型转换C中:复制代码 代码如下:(T)element 或者 T(element)c++中:复制代码 代码如下:reinterpret_cast (expression)转载 2015-03-14 15:59:58 · 686 阅读 · 0 评论 -
构造函数中调用虚函数?
在构造函数中调用虚成员函数,虽然这是个不很常用的技术,但研究一下可以加深对虚函数机制及对象构造过程的理解。这个问题也和一般直观上的认识有所差异。先看看下面的两个类定义。struct C180{ C180() { foo(); this->foo(); } virtual foo() { cout }};struct C190 : public C180{ C190() {} virtual转载 2010-05-07 20:08:00 · 449 阅读 · 0 评论 -
构造函数和析构函数中的虚函数调用
一个类的虚函数在它自己的构造函数和析构函数中被调用的时候,它们就变成普通函数了,不“虚”了。也就是说不能在构造函数和析构函数中让自己“多态”。例如:class A{public: A() { foo();} // 在这里,无论如何都是A::foo()被调用! ~A() { foo();} // 同上 virtual void f转载 2010-05-07 20:13:00 · 412 阅读 · 0 评论 -
深入探讨C++中的引用
引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &r转载 2014-08-27 23:05:35 · 395 阅读 · 0 评论 -
cin cout
在程序中包含iostream文件将自动创建cin对象和cou对象,即标准输入流和标准输出流。关于cout :<<操作符的默认含义是按位左移操作符,但ostream类重新定义了<<操作符,将其重载为输出方法。<<支持C++的所有的基本类型。对于每一种数据类型,C++都提供了operator<<()的定义。例如,如果表达式cout << 100对应于下面的方法:Ostream & operator<<转载 2014-08-27 22:24:59 · 713 阅读 · 0 评论 -
strlen和sizeof的区别
一、sizeof sizeof(...)是运算符,而不是一个函数。 一个简单的例子:int a;cout 在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 它的功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的转载 2014-09-11 22:20:00 · 320 阅读 · 0 评论 -
用linux编译c ++ 时遇到 的问题
代码 1://test.cpp #include int main(){ cout return 0; }我们编译 一下:collect2: ld 返回 1[hqlong@hqlong2008 ~]$ gcc test.cpp在包含自 /usr/lib/gcc/i386-redhat-linux/4.1.0/../../../../i转载 2014-08-28 22:39:17 · 1100 阅读 · 0 评论 -
c++ 函数返回引用
一,c++函数的返回分为以下几种情况1)主函数main的返回值:这里提及一点,返回0表示程序运行成功。2)返回非引用类型:函数的返回值用于初始化在跳用函数出创建的临时对象。用函数返回值初始化临时对象与用实参初始化形参的方法是一样 的。如果返回类型不是引用,在调用函数的地方会将函数返回值复制给临时对象。且其返回值既可以是局部对象,也可以是求解表达式的结果。3)返回引用:当函数返回引用类型转载 2014-08-31 00:20:52 · 1398 阅读 · 0 评论 -
函数参数及传递方式
c语言函数参数的传值方式只有传值一种,分为传变量值和传变量地址值。C++中参数传递中使用的的:变量、指针(数组)、引用进行详细的说明。“变量”的使用:使用“变量”作为函数参数进行传递,当调用函数时,其实本质是内存另外开辟一个空间,将传人的实参拷贝一份给形参,即函数中处理的实际上是实参的一个副本(形参),所以无论函数怎么处理,实参的值是不会发生任何的改变的。指针使用:使用“指针”作原创 2014-08-31 00:14:57 · 578 阅读 · 0 评论 -
內联函数
介绍内联函数之前,有必要介绍一下预处理宏。内联函数的功能和预处理宏的功能相似。相信大家都用过预处理宏,我们会经常定义一些宏,如 #define TABLE_COMP(x) ((x)>0?(x):0) 就定义了一个宏。 为什么要使用宏呢?因为函数的调用必须要将程序执行的顺序转移到函数所存放在内存中的某个地址,将函数的程序内容执行完后,再返回到转去执行该函数前的地方。这种转移转载 2014-08-31 00:34:05 · 472 阅读 · 0 评论 -
为什么虚函数必须是非静态成员函数 构造函数可以为static
静态函数用static声明的函数是静态函数。静态函数可以分为全局静态函数和类的静态成员函数。Static关键字在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。用static声明的方法是静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非转载 2010-05-07 20:16:00 · 798 阅读 · 0 评论 -
gflags(google开源的一套命令行参数解析工具)
gflags是google开源的一套命令行参数解析工具,比getopt()函数功能要强大,使用起来更加方便,gflags还支持从环境变量和配置文件中读取参数。目前有C++和Python版本。本文就来详细介绍C++版本gflags的使用,主要分如下两个部分 Contents 1. gflags的安装 2. gflags的使用介绍转载 2017-11-08 14:44:10 · 7760 阅读 · 0 评论