在有时候由于类太大。须要在类在后面定义;

比如:

class Y{
void f(X);
}; class X{
//一些成员数据和函数 };
//error

由于c++要求不论什么一个变量在引用之前必须声明。

。在上述定义中我们能够调换两者的顺序来实现。

可是假设形成了循环?

class X{
void f1(Y)
};
class Y{
void f(X);
};
//error

这样的就不能通过简单的调换顺序来通过编译器在调用之前必须声明的金科玉律了。

那么我们能够通过在上述中先声明?

class Y;
class X{
void f1(Y) //error
};
class Y{
void f(X);
};

但是上述的代码中函数f1(Y)的參数是变量Y而这时候必须知道整个类Y的详细结构的。

所以是不可行的。

所以我们通过将函数f1()中的參数Y改为

class Y;
class X{
void f1(Y*)
};
class Y{
void f(X);
};
//right

将上述參数类Y改为其指针之后就可行的由于编译器知道怎样传递一个地址,这一地址是固定大小的。

而不必要知道传递的是什么对象,即使是我们全然不知道须要传递的对象类型的大小。

可是这里函数f2()就能够使用类X作为參数 。由于类X已经被完整的定义了。

C++中没有定义类的引用。的更多相关文章

  1. c++中两个类互相引用的问题

    最近在改一个C++程序的时候碰到一条警告信息,警告信息为:“ 删除指向不完整“Q2DTorusNode”类型的指针:没有调用析构函数                1> c:\users\lxw ...

  2. C++中如何定义类和对象?

    在C++语言中,对象的类型被称为类,类代表了某一批对象的共性和特征. 类是对象的抽象,而对象是类的具体实例.如同C中的结构体一样,我们要先定义一个结构体,再使用结构体去定义一个变量.同一个结构体可以定 ...

  3. obj-c中如何定义类的私有实例方法

    obj-c原生没有提供此项机制,不像java有private/protected/public方法的概念.obj-c中的@private以及类似的@protected和@public是用于修饰类的实例 ...

  4. 【python】python中的定义类属性和对像属性

    python中变量是没有类型的可以绑定任意类型,但是在语法上不能声明变量. 那我们怎麽来声名一个变量呢? f=None 这样我们给着个变量绑定了以各None类型,我们随时可用重新绑定其它类型.这样我们 ...

  5. PHP中如何定义类及其成员属性与操作

    1.类的定义: i. 类的关键字定义使用class 1.定义一个空类 Class Person{}; 2.定义一个有成员属性和操作的类 Class Person{ 成员属性........ 操    ...

  6. JS定义类的六种方式详解

    转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类 ...

  7. JavaScript 定义类的最佳写法——完整支持面向对象(封装、继承、多态),兼容所有浏览器,支持用JSDuck生成文档

    作者: zyl910 [TOC] 一.缘由 由于在ES6之前,JavaScript中没有定义类(class)语法.导致大家用各种五花八门的办法来定义类,代码风格不统一.而且对于模拟面向对象的三大支柱& ...

  8. 类中嵌套定义指向自身的引用(C、C++、C#)或指针(C、C++)

    在定义类的时候,类中可以嵌套定义指向自身的引用(C.C++.C#)或指针(C.C++).详见代码: Node类: using System; using System.Collections.Gene ...

  9. JS中定义类的方法

    JS中定义类的方式有很多种: 1.工厂方式    function Car(){     var ocar = new Object;     ocar.color = "blue" ...

随机推荐

  1. 初入IT行業,走出自我

    细细算下来,我已经有半年的工作经验了... 本人毕业于武汉一所普通的一本院校,大学期间普普通通,大三一年自学了PS和Flash和静态网站制作,那时的我就是兴趣所在,但是水平一般. 大四上学期用了大半年 ...

  2. Codeforces Round #321 (Div. 2) A. Kefa and First Steps【暴力/dp/最长不递减子序列】

    A. Kefa and First Steps time limit per test 2 seconds memory limit per test 256 megabytes input stan ...

  3. java中split任意数量的空白字符

    java程序中经常通过split截取字符串来取得其中的关键字.但是由于其中不同操作系统或者不同作者的习惯,经常会出现不同数量的空格,例如"   "(3个空格):或者出现制表符.Ta ...

  4. NOIP2016_day1_No1玩具谜题

    #include <iostream> #include <cstdio> using namespace std; int main () { freopen("t ...

  5. 反汇编引擎diStorm3

    反汇编引擎diStorm3   diStorm3是Kali Linux自带的一款轻量级.容易使用的反汇编引擎.它可以反汇编生成16位.32位和64位指令.它支持的指令集包括FPU.MMX.SSE.SS ...

  6. Ugly Number II -- LeetCode

    Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors ...

  7. spring-----mvc的反射调用

    这几天在看spring mvc 源码,一直很好奇它究竟在哪进行的反射调用,通过源码,仔细阅读,最后发现了调用位置在类 InvocableHandlerMethod 的doInvoke 方法 /** * ...

  8. ios frame,bound和center

    frame:指的是视图在父视图的坐标系统中的大小和位置. bound:指的是视图在试图本身的坐标系统中的大小(位置起点是原点). center:指的是视图在父视图坐标系统中的中心点. 贴张苹果官网的图 ...

  9. Android AIDL实例解析

    AIDL这项技术在我们的开发中一般来说并不是很常用,虽然自己也使用新浪微博的SSO登录,其原理就是使用AIDL,但是自己一直没有动手完整的写过AIDL的例子,所以就有了这篇简单的文章. AIDL(An ...

  10. Makefile之文件搜索

    Makefile之文件搜索 1.Makefile 文件中的"VPATH"变量 如果没有指明这个变量,make只会在当前目录下查找依赖文件和目标文件: 如果定义了这个变量,make会 ...