C++
文章平均质量分 78
qq1041256623
这个作者很懒,什么都没留下…
展开
-
C++中public,protected,private访问
C++中public,protected,private访问 当private,public,protected单纯的作为一个类中的成员权限设置时: private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 public: 可以被转载 2013-10-28 20:31:22 · 570 阅读 · 0 评论 -
static_cast 与 dynamic_cast 的区别
强制类型转换运算符:C++有四种强制类型转换符,分别是dynamic_cast,const_cast,static_cast,reinterpret_cast。其中dynamic_cast与运行时类型转换密切相关,在这里我们先介绍dynamic_cast,其他三种在后面介绍。 6.1、dynamic_cast强制转换运算符:该转换符用于将一个指向派生类的基类指针或引用转换为派生类的指针或引用转载 2014-03-17 21:28:20 · 565 阅读 · 0 评论 -
存储类型auto,static,extern,register的区别
变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储方式(静态和动态),包含auto,static,register,extern四种。 内存中。具体点来说内存分为三块:静态区,堆区,栈区。外部变量和全局变量存放在静态区,局部变量存放在栈区,动态开辟的内存存在堆区。 一、简要性比较 extern 外部变量声明,是指这是一个已在别的地方转载 2014-03-29 15:06:56 · 595 阅读 · 0 评论 -
C++虚函数继承操作
using namespace std; class ClassA { public: ClassA() {cout ~ClassA() {cout void F1() {cout virtual void F2() {cout }; class ClassB : public ClassA { publ原创 2014-03-20 16:39:23 · 514 阅读 · 0 评论 -
虚函数与默认实参
像其他任何函数一样,虚函数也可以有默认实参。通常,如果有用在给定调用中的默认实参值,该值将在编译时确定。如果一个调用省略了默认值的实参,则所用的值由调用该函数的类型定义,与对象的动态类型无关。通过基类的引用或指针调用虚函数时,默认实参为在基类虚函数生命中定义的值,如果通过派生类的指针或者引用调用虚函数,则默认实参是在派生类的版本中声明的值。 在同一虚函数的基类版本和派生类版本中使用不同的默认原创 2014-04-09 21:29:33 · 489 阅读 · 0 评论 -
动态链接库和静态链接库的区别
静态连接库就是把(lib)文件中用到的函数代码直接链接进目标程序,程序运行的时候不再需要其它的库文件;动态链接就是把调用的函数所在文件模块(DLL)和调用函数在文件中的位置等信息链接进目标程序,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib 中的指令都全部被直接包含在最终生转载 2014-04-27 11:59:20 · 414 阅读 · 0 评论 -
虚函数与虚继承寻踪
封装、继承、多态是面向对象语言的三大特性,熟悉C++的人对此应该不会有太多异议。C语言提供的struct,顶多算得上对数据的简单封装,而C++的引入把struct“升级”为class,使得面向对象的概念更加强大。继承机制解决了对象复用的问题,然而多重继承又会产生成员冲突的问题,虚继承在我看来更像是一种“不得已”的解决方案。多态让对象具有了运行时特性,并且它是软件设计复用的本质,虚函数的出现为多态性转载 2014-09-19 14:33:00 · 376 阅读 · 0 评论 -
C++_运算符重载
么是运算符的重载? 运算符与类结合,产生新的含义。 为什么要引入运算符重载? 作用:为了实现类的多态性(多态是指一个函数名有多种含义) 怎么实现运算符的重载? 方式:类的成员函数 或 友元函数(类外的普通函数) 规则:不能重载的运算符有 . 和 .* 和 ?: 和 :: 和 sizeof 友元函数和成员函数的使用场转载 2014-10-09 10:14:21 · 387 阅读 · 0 评论 -
C++中char*与wchar_t*之间的转换
关于C++中的char*与wchar_t*这两种类型的相互转换,网上说的大多很繁琐,可行性也不高。下面这个方法是在MSDN里面找到的,个人认为还比较不错: 把char*转换为wchar_t* 用stdlib.h中的mbstowcs_s函数,可以通过下面的例子了解其用法: char *CStr = "string to convert"; size_t len = strlen(C转载 2013-12-13 15:38:42 · 627 阅读 · 0 评论 -
VS2008下面将 CString转化为char* 的问题
VS2008下面将 CString转化为char* 的问题 使用CString的GetBuffer方法 CString origCString("Hello,World"); char* CharString = origCString.GetBuffer(origCString.GetLength()+1); 网上的很多文章说的都是这个方法,但是我在VC++20转载 2013-12-13 11:37:39 · 774 阅读 · 0 评论 -
vector的reserve和resize
vector 的reserve增加了vector的capacity,但是它的size没有改变!而resize改变了vector的capacity同时也增加了它的size! 原因如下: reserve是容器预留空间,但在空间内不真正创建元素对象,所以在没有添加新的对象之前,不能引用容器内的元素。加入新的元素时,要调用push_back()/insert()函数。 r转载 2013-11-24 20:55:35 · 538 阅读 · 0 评论 -
C++函数对象与函数指针不同之处
在C++编程语言中,有很多功能都与C语言相通,比如指针的应用等等。在这里我们介绍的则是一种类似于函数指针的C++函数对象的相关介绍。C++函数对象不是函数指针。但是,在程序代码中,它的调用方式与函数指针一样,后面加个括号就可以了。这是入门级的随笔,说的是函数对象的定义,使用,以及与函数指针,成员函数指针的关系。 C++函数对象实质上是一个实现了operator()--括号操作符-转载 2013-11-25 09:27:13 · 651 阅读 · 0 评论 -
ofstream和ifstream详细用法
ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间; 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout 2、析取器(>>) 从流中转载 2013-11-29 20:58:37 · 453 阅读 · 0 评论 -
函数指针
1) 函数指针的初始化。 函数如下: 1 int CompareString(const string& str1, const string& str2) 2 { 3 return str1.compare(str2); 4 } 函数的初始化有两种方式: 第一种,也是最普遍的方式: 1 int (*CompareFunction)(const strin转载 2013-11-29 13:49:50 · 394 阅读 · 0 评论 -
typedef函数指针用法
1.简单的函数指针的应用 形式1:返回类型(*函数名)(参数表) [cpp] char (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun)(2); } char (*pFun)(in转载 2013-11-29 14:13:22 · 363 阅读 · 0 评论 -
类的静态成员函数和静态成员变量的使用
C++类静态成员与类静态成员函数 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象无关。静态方法就是与该类相关的,是类的一种行为,而不是与该类的实例对象相关。 静态数据成员的用途之一是统计有多少个对象实际存在。转载 2013-12-09 19:57:58 · 536 阅读 · 0 评论 -
结构体操作
#include struct point{ int *p; int a; }; int main() { point *p_x; point y; int m=6; p_x=&y; y.a=5; y.p=&m; int d=*y.p; int c=*p_x->p; int f=y.a; int g=(*p原创 2013-12-05 00:04:27 · 454 阅读 · 0 评论 -
C++中四种强制类型转换的区别
使用标准C++的类型转换符:static_cast、dynamic_cast、reinterpret_cast和const_cast。 1、static_cast 用法:static_cast (expression) 该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。它主要有如下几种用法: (1)用于类层次结构中基类和转载 2014-11-03 10:14:39 · 397 阅读 · 0 评论