C++
HighKit
这个作者很懒,什么都没留下…
展开
-
数组与指针
1、数组包括定义初始化和数组的操作,在声明数组的维数时必须用大于等于1的常量表达式定义,包括整形字面值常量、枚举常量以及整形的const对象。数组的初始化可以用显示初始化的方法,如:int ia[]={1,2,3};编译器会自动确定数组的长度。数组的访问操作是通过下标操作符[ ]实现的。 2、指针的作用相当于vector容器中的迭代器,这部分主要包括指针的定义初始化和相关操作以及一些注意事项。原创 2012-04-24 16:28:09 · 486 阅读 · 0 评论 -
继承中的支配规则和赋值兼容规则
C++的支配规则就是这样:★在基类和派生类有重名(但可以访问)的成员时,优先派生类的成员★如果要访问基类成员,必须加上作用域符::★私有(private)成员连派生类也不可以访问,只有本类和友类可以访问,而类成员默认(像你这样不写private)都是私有的★如果派生类要访问基类的成员,应该用protected类型。公有继承时,派生类是基类的子类型,具有子类型关系的对象之间满足如转载 2013-04-09 11:06:16 · 1675 阅读 · 0 评论 -
继承类中的子对象和基类对象的初始化
考察下面的程序:class point1 {public: point1(); point1(int i); virtual ~point1();private: int x; };point1::point1(){ x=1; cout}point1::point1(int i){ x=i; c转载 2013-04-09 10:29:10 · 1145 阅读 · 1 评论 -
C++中虚析构函数的作用
我们知道,用C++开发的时候,用来做基类的类的析构函数一般都是虚函数。可是,为什么要这样做呢?下面用一个小例子来说明: 有下面的两个类:class ClxBase{public: ClxBase() {}; virtual ~ClxBase() {}; virtual void DoSomething() { cout "Do转载 2013-04-09 13:07:52 · 582 阅读 · 0 评论 -
C++基类继承了什么
【原文出处】http://www.prglab.com/cms/pages/c-tutorial/oo-programming/relationships-between-classes.php什么是从基类中继承的? (What is inherited from the base class?)理论上说,子类(drived class)继承了基类(base class)的所有成员转载 2013-04-09 13:35:30 · 833 阅读 · 0 评论 -
C++随机数的生成方法
一、C++中不能使用random()函数==================================================================================本文由青松原创并依GPL-V2及其后续版本发放,转载请注明出处且应包含本行声明。C++中常用rand()函数生成随机数,但严格意义上来讲生成的只是伪随机数(pseudo-r转载 2013-03-27 10:27:41 · 728 阅读 · 0 评论 -
如何区分声明和定义
floor 8变量和对象不加extern永远是定义,类中的除外.函数只有函数头是声明,有函数体是定义.类永远只是声明.类成员函数的函数体是定义.class C{static int x;//这里的x是声明static const int a;;//这里的a是声明//非static变量在类定义对象时才分配内存.C();//这里的函数是声明};int C转载 2013-03-27 09:35:58 · 839 阅读 · 0 评论 -
构造函数为什么不能是虚函数
1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能是虚函数。2. 从使用角度,虚函数主要用于在信息不全的情况下,能使重载的函数得到对应的调用。构造函数本身转载 2013-04-15 22:17:08 · 857 阅读 · 0 评论 -
成员函数中调用虚函数
#include using namespace std;class A{public:A(){coutvirtual ~A(){coutvirtual void f(){coutvoid g(){f();}};class B:public A{public:B(){f(); cout~B(){cout};class转载 2013-04-15 22:16:30 · 2288 阅读 · 0 评论 -
类的访问标号
判断对一个类中的成员的访问权限,要看这段访问成员的代码所处的位置private:只有处于类成员函数中或友员函数中的访问代码才能访问,注意不仅可以访问该对象中的私有,也可以访问其它该类型对象的私有,如: class book{public: book():name("unknown"),price(0.0){}; book(con原创 2013-04-02 17:33:06 · 909 阅读 · 0 评论 -
一个类的对象作为另一个类的数据成员时如何构造函数
一个类的对象作为另一个类的数据成员。 一个类中的数据成员除了可以是int, char, float等这些基本的数据类型外,还可以是某一个类的一个对象。用子对象创建新类。 在C++中,当把一个类的对象作为新类的数据员时,则新类的定义格式可表示为: class X { 类名1 成员名1; 类名2 成员名2; ……转载 2013-04-02 16:38:40 · 17206 阅读 · 1 评论 -
类的默认构造函数能否定义为私有
class A{ A(); ……}int main(){ A a; return 0;}编译将会出错:error C2248: 'A::A' : cannot access private member declared in class 'A'构造函默认为为私有,在类的外部无法访问。如果在主函数里面声明a,系统调用默认构造函数,而原创 2012-06-13 11:07:35 · 2299 阅读 · 0 评论 -
静态类型和动态类型 静态绑定和动态绑定
什么意思?你可能会说你不懂这些最新的面向对象术语;或者,过度劳累的你一时想不起静态和动态绑定的区别。那么,让我们来复习一下。先说明:静态类型和动态类型==静态绑定和动态绑定,(两者是一个意思,说法不一样而已)嘿嘿对象的静态类型是指你声明的存在于程序代码文本中的类型。看下面这个类层次结构:enum ShapeColor { RED, GREEN, BLUE };// 一个表示几何形状转载 2012-07-25 10:53:49 · 901 阅读 · 0 评论 -
C++中explicit关键字的作用
explicit用来防止由构造函数定义的隐式转换。要明白它的作用,首先要了解隐式转换:可以用单个实参来调用的构造函数定义了从形参类型到该类类型的一个隐式转换。例如:class things{ public: things(const std::string &name = ""): m_name(name转载 2012-07-25 20:16:36 · 535 阅读 · 0 评论 -
虚函数
定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数 [1] 语法:virtual 函数返回类型 函数名(参数表) { 函数体 } 用途:实现多态性,通过指向派生类的基类指针,访问派生类中同名覆盖成员函数 虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式:转载 2012-07-26 21:54:50 · 494 阅读 · 0 评论 -
虚基类
概述 当在多条继承路径上有一个公共的基类,在这些路径中的某几条汇合处,这个公共的基类就会产生多个实例(或多个副本),若只想保存这个基类的一个实例,可以将这个公共基类说明为虚基类.虚基类. 在继承中产生歧义的原因有可能是继承类继承了基类多次,从而产生了多个拷贝,即不止一次的通过多个路径继承类在内存中创建了基类成员的多份拷贝。虚基类的基本原则是在内存中只有基类成员的一份拷贝。转载 2012-07-28 09:44:10 · 1048 阅读 · 0 评论 -
OpenCV的imshow无法正常显示图片
OpenCV2.2,vs2010,win7 程序读一段视频,然后进行分析处理,在显示视频的时候,却发现imshow无法显示读取的帧。代码如下: C++代码 VideoCapture cap; cap.open("test.avi"); namedWindow("video",1); for(;;){ Mat frame; cap if(转载 2012-08-28 10:12:06 · 19022 阅读 · 3 评论 -
如何计算结构体的大小
结构体的大小运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4。基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小。 C语言中的构造数据类型有三种:数组、结构体和共用体。数组是相同类型的元素的集合,只要会计算单个元素的大小,整个数组所占空间等于基础元素大小乘上元素的个数。转载 2013-03-29 00:25:14 · 979 阅读 · 0 评论 -
C++局部类和嵌套类的区别
局部类 在一个函数体内定义的类称为局部类。局部类中只能使用它的外围作用域中的对象和函数进行联系,因为外围作用域中的变量与该局部类的对象无关。局部类不能被外部所继承。在定义局部类时需要注意:局部类中不能说明静态成员函数,并且所有成员函数都必须定义在类体内。在实践中,局部类是很少使用的。下面是一个局部类的例子。 int a; void fun() { static转载 2013-04-01 00:51:26 · 761 阅读 · 0 评论 -
extern "C" 的用意
前些天,编程序是用到了很久以前写的C程序,想把里面的函数利用起来,连接发现出现了找不到具体函数的错误:以下是假设旧的C程序库C的头文件/*-----------c.h--------------*/#ifndef _C_H_#define _C_H_extern int add(int x, int y);#endifC的源文件/*-----------c.c-----转载 2013-05-09 16:49:58 · 609 阅读 · 0 评论