随笔分类 -  C/C++基础

摘要:RTTI(运行时类型识别)允许“用指向基类的指针或引用来操纵对象”的程序能够获取到“这些指针或引用所指对象“的实际派生类型。在c++中,为了支持RTTI,提供了两个操作符:1、dynamic_cast操作符,它允许在运行时刻进行类型转换,从而使程序能够在一个类层次结构中安全地转换类型,把基类指针转换成派生类指针,或把指向基类的左值转换成派生类的引用,当然只有在保证转换能够成功的情况下才可以。2、typeid操作符,它指出指针或引用指向的对象的实际派生类型。但是,对于要获得的派生类类型的信息,dynamic_cast和typeid操作符的操作数的类型必须是带有一个或多个虚拟函数的类类型。即,对于 阅读全文

posted @ 2011-03-14 17:55 Zhiqiang.Chen 阅读(287) 评论(0) 推荐(0)

摘要:一、C风格(C-style)强制类型转换(T) expression // cast expression to be of type T二、C++的几种类型转换符号1. static_cast用法:static_cast <type-id> ( expression )Remarks:No run-time type check is made to help ensure the safety of the conversion.该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有以下几种用法:class A{public: 阅读全文

posted @ 2011-03-14 17:42 Zhiqiang.Chen 阅读(181) 评论(0) 推荐(0)

摘要:相同点:都可用于申请动态内存和释放内存不同点:(1)操作对象有所不同。malloc与free是C++/C 语言的标准库函数,new/delete 是C++的运算符。对于非内部数据类的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加malloc/free。(2)在用法上也有所不同。函数malloc 的原型如下:void * malloc(size_t size);用malloc 申请一块长度为lengt 阅读全文

posted @ 2010-12-20 17:54 Zhiqiang.Chen 阅读(109) 评论(0) 推荐(0)

摘要:1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。2.sizeof是算符,strlen是函数。3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''/0''结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。5.大部分编译程序在编译的时候就把sizeof计算过了是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因charstr[20]="0123456789"; // 阅读全文

posted @ 2010-12-20 17:21 Zhiqiang.Chen 阅读(276) 评论(0) 推荐(0)

摘要:char* s1 = "hello"; char s2[] = "world";相同点:都是表示一个字符串。不同点:操作系统对它们在内存中的存储方式作了不同的处理。下面是测试代码:#include <iostream.h>int main(){ char *S1 = "Hello"; char S2[] = "World";// *(S1+2) = 'x'; // 执行时出错。 *(S2+5) = 'x'; // 执行时正确。 *(S2+6) = '/0' 阅读全文

posted @ 2010-12-20 17:07 Zhiqiang.Chen 阅读(131) 评论(0) 推荐(0)

导航