c++
文章平均质量分 60
「已注销」
主要对计算机图形学和计算机视觉感兴趣
展开
-
VC的"附加依赖项"、"库目录"和"包含目录"的作用
包含目录:#include 中headerfile.h的搜索目录。如果有XXX.h找不到,设置这个目录可以解决。附加依赖项:C++的库会把函数、类的声明放在*.h中,实现放在*.cpp或*.cc中。编译之后,*.cpp,*.cc,*.c会被打包成一个.lib文件,这样可以保护源代码。所以,要使用一个库,除了要include他的头文件以外,还要在链接过程中把lib加进去。这个就是在附加链原创 2015-07-26 17:12:49 · 545 阅读 · 0 评论 -
c++ new delete
当创建一个c++对象时,会发生两件事:(1)为对象分配内存。(2)调用构造函数初始化这块内容。这块内存可以位于3个区域:静态存储区、栈、堆。operator new当用new创建一个对象时,它将在堆里为对象分配内存(使用“operator new()”)并为这块内存调用构造函数。MyType * fp = new MyType;operator delete原创 2015-08-11 13:47:52 · 308 阅读 · 0 评论 -
Struct和Class的不同
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。struct能包含成员函数吗? 能!struct能继承吗? 能!!struct能实现多态吗? 能!!! 既然这些它都能实现,那它和class还能有什么区别?最本质的一个区别就是默认的访问控制: 默认的继承访问权限struct是pu原创 2015-08-11 18:35:49 · 384 阅读 · 0 评论 -
c++sezeof
在c++面试中,sizeof是经常被问到的概念。 问:定义一个空类型,里面没有任何成员变量和成员函数,对该类型求sizeof,结果是多少? 答:结果是1。 问:为什么不是0? 答:空类型的实例中不包含任何信息,本来求sizeof应该是0,但是当声明该类型的实例时,它必须在内存中占有一定的空间,否则无法使用这些实例。至于占用多少内存,由编译器决定。Visual Studio中每个原创 2015-08-11 13:21:12 · 479 阅读 · 0 评论 -
多态基类的析构函数应该为虚函数
#includeusing namespace std;class CBird{public: CBird() { cout "CBird constructor." endl; }; ~CBird() { cout "CBird destructor." endl; }; virtual void fly() { cout "CBird fly." end原创 2015-08-11 13:24:55 · 351 阅读 · 0 评论 -
重写
当一个子类继承一父类,而子类中的方法与父类中的方法的名称,参数个数、类型都完全一致时,就称子类中的这个方法重写了父类中的方法。中文名:重写外文名:Override实现方法:调用和执行常用对象:派生类继承基类原创 2015-08-11 13:33:22 · 312 阅读 · 0 评论 -
malloc/free与new/delete的区别
原文地址:http://blog.csdn.net/hackbuteer1/article/details/6789164#comments相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求转载 2015-08-12 18:07:38 · 298 阅读 · 0 评论 -
std::string::find() 和 std::string::npos
int idx = str.find("abc");if (idx == string::npos) ... 上述代码中,idx的类型被定义为int,这是错误的,即使定义为 unsigned int 也是错的,它必须定义为 string::size_type。 npos 是这样定义的:static const size_type npos = -1; 因为 s原创 2015-08-19 11:49:47 · 276 阅读 · 0 评论 -
C++static成员的使用
一、static 成员变量对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量。比如说统计某种类型对象已创建的数量。如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时可以用类的静态成员来解决这个问题。非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在,它是与类关联的对象,不与类对象关联。(1)、stat原创 2015-08-07 21:02:51 · 300 阅读 · 0 评论 -
内存对齐
在我们的程序中,数据结构还有变量等等都需要占有内存,在很多系统中,它都要求内存分配的时候要对齐,这样做的好处就是可以提高访问内存的速度。 我们还是先来看一段简单的程序: 程序一 1 #include iostream> 2 using namespace std; 3 4 struct X1原创 2015-08-11 16:43:11 · 297 阅读 · 0 评论 -
内联函数和带参数的宏的区别
(1)、内联函数当程序执行函数调用时,系统要建立栈空间,保护现场,传递参数以及控制程序执行的转移等等,这些工作需要系统时间和空间的开销。有些情况下,函数本身功能简单,代码很短,但使用频率却很高,程序频繁调用该函数所花费的时间却很多,从而使得程序执行效率降低。为了提高效率,一个解决办法就是不使用函数,直接将函数的代码嵌入到程序中,可以使用带参数的宏定义实现,但是这种方法也有缺点,程序原创 2015-08-11 16:27:55 · 1582 阅读 · 0 评论 -
纯虚函数
纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去做。这就是纯虚函数的作用。1 定义纯虚函数是一种特殊的虚函数,它的一般格式如下:class {virtual ()=0;…};在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派原创 2015-08-11 15:21:13 · 659 阅读 · 0 评论 -
VS项目属性的一些配置项的总结(important)
首先,解决方案和项目文件夹包含关系(c++项目):VS解决方案和各个项目文件夹以及解决方案和各个项目对应的配置文件包含关系,假设新建一个项目ssyy,解决方案起名fangan,注意解决方案包括项目,此时生成的最外层目录为fangan代表整个解决方案的内容都在这个文件夹内。在这个fangan文件夹内包含有fangan.sln的解决方案配置文件和一个ssyy文件夹,ssyy文件夹代表整个ssyy项转载 2015-07-28 15:49:42 · 531 阅读 · 0 评论 -
c++中的构造函数和析构函数
(一):构造函数、析构函数、赋值与初始化、explicit关键字 构造函数是为了保证对象的每个数据成员都被正确初始化通常情况下构造函数应声明为公有函数,一般被隐式地调用。构造函数被声明为私有有特殊的用途,比如单例模式,以后详谈。构造函数可以有任意类型和任意个数的参数,一个类可以有多个构造默认构造函数不带参数的构造函原创 2015-08-07 17:31:31 · 454 阅读 · 0 评论 -
exit(0)与exit(1)、return区别
exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在主函数中,则会退出函数并返回一值。详细说:1. return返回函数值,是关键字; exit 是一个函数。 2. return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。 3. return是函数的退出(返回);原创 2015-07-28 15:09:45 · 13783 阅读 · 1 评论 -
C++对象的静态类型与动态类型
由于继承导致对象的指针和引用具有两种不同的类型:静态类型 和 动态类型。 静态类型:指针或者是引用声明时的类型。 动态类型:由他实际指向的类型确定。 例如:GameObject *pgo= //pgo静态类型是GameObject * new SpaceShip;//动态类型是SpaceShip* Asterioi原创 2015-08-10 19:16:44 · 393 阅读 · 0 评论 -
c++ new的三种形态
(1)new operatornew的第一种形态是new operator,它是语言内建的,不能重载。new operator完成以下三件工作:1. allocate memory for this object.2. call constructor to init that memory.3. return the pointer of this object.原创 2015-08-11 14:18:34 · 354 阅读 · 0 评论 -
C++基础知识点
delete p;只是删除指针p指向内存区,并不是删除指针p,所以p还是可以用的。删除空指针所指向内存是可以的。 堆中的变量和对象时匿名的,没有名称,只能通过指针来访问。 在堆中创建对象时,在分配内存的同时会调用类的构造函数,在删除堆中对象时,会调用类的析构函数。 为了避免内存泄露,在删除一个指针后应该将其其值赋为0。 常量指针是指针指向的内存区域地址不能改变,但是该内存地原创 2015-08-11 16:06:15 · 263 阅读 · 0 评论 -
类与类之间的关系
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言。1、继承(泛化)GeneralizationManager 继承自Employee.2、关联 Association,单向关联 DirectedAssociationOrder原创 2015-08-11 16:22:35 · 382 阅读 · 0 评论 -
(visual)c++ 内存分配
“烫”和“屯”在vc++中,栈中未初始化的内存在变量监视窗口总是显示为一串“烫”字;而堆中未初始化的内存则显示一串“屯”字。原因是:vc++编译器对栈中未初始化的内存默认设置为0xcc,而两个0xcc,即0xcccc在GBK编码中就是“烫”;而堆中未初始化的内存默认设置为0xcd,而0xcdcd在GBK编码中则是“屯”。内存分配方式程序运行时,首先要被加载到内存,程序在内存中的原创 2015-08-11 13:50:30 · 631 阅读 · 0 评论 -
static 用法总结
1. 用于函数内部修饰变量,即函数内的静态变量。这种变量的生存期长于该函数,使得函数具有一定的“状态”。使用静态变量的函数一般是不可重入的,也不是线程安全的,比如strtok(3)。2. 用在文件级别(函数体之外),修饰变量或函数,表示该变量或函数只在本文件可见,其他文件看不到也访问不到该变量或函数。专业的说法叫“具有internal linkage”(简言之:不暴露给别的translatio原创 2015-08-07 21:15:33 · 252 阅读 · 0 评论