关于需要提前引用声明的几点经验

  在C++ 中如果处理的类比较复杂的话,并且相关度极大,则需要定义在一个头文件中,但是往往会出现需要提前引用声明的情况,往往原则如下:

1. 如果在B类中用到了A类的类型,但是没有用到A类的方法,则可以将A类提前引用声明处理即可。

2. 如果A1继承A,B1继承B,但是B1引用了A1的类型且B1使用了A1的方法,且A引用了B的类型,则可以将B提前引用声明,且B1定义在文件最后。

总结:

  如果只引用了类型,没有引用方法,则可以将被引用类的声明提前;

  如果引用了类型的方法,如果满足被引用方法的类型在引用类之前即可,就不需要提前引用声明。

时间: 2024-10-05 20:59:58

关于需要提前引用声明的几点经验的相关文章

C++中对类的提前引用声明注意事项

//或许,友元是VC++6.0心里永远的痛,对于这个BUG我一直很介意.//注:这个程序在VC++6.0里是行不通的,在VS2008里是可以的.#include <iostream> #include <string> using namespace std; class Student; //提前引用声明 //声明Teacher类 class Teacher { public: Teacher(){} Teacher(int i,string s,char c,int t=0):

C/c++中 数组全局变量的定义声明 与 引用声明

数组声明一次,所有的  定义声明  有切仅有一次! 别人遇到的问题如下: 在声明定义时,定义数组如下: int G_glob[100]; 在其他文件引用时声明如下: int *G_glob; 这样的操作,在vc中,是可以编译通过的,这种情况大家都比较模糊并且需要注意,数组与指针类似,但并不等于说对数组的声明起变量就是指针.上面所说的的程序在运行时发现了问题,在引用声明的那个文件中,使用这个指针时总是提示内存访问错误,原来我们的连接程序并不把指针与数组等同,连接时,也不把他们当做同一个定义,而是认

C++类的组合、前向引用声明

3.5类的组合 Part1.应用背景 对于复杂的问题,往往可以逐步划分为一系列稍微简单的子问题. 解决复杂问题的有效方法是将其层层分解为简单的问题组合,首先解决简单问题复杂问题也就迎刃而解了. 在面向对象的程序设计中,可以对复杂对象进行分解.抽象,把一个复杂对象分解为简单对象的组合,由比较容易理解和实现的部件对象装配而成. Part2.定义及代码 ①定义:类的组合描述的就是一个雷内嵌其他类的对象作为成员的情况,他们之间的关系是一种包含与被包含的关系. ②作用机制:当创建类的对象时,如果这个类具有

友元函数友元类.

友元能够理解为是类的"朋友".它能够訪问类的保护和私有成员.友元的作用在于提高程序的执行效率,可是,它破坏了类的封装性和隐藏性.友元能够是一个函数,该函数被称为友元函数:友元也能够是一个类,该类被称为友元类. 一.友元函数 友元函数是在类外定义的一个函数,不是类的成员函数. 这个函数能够是普通的C++函数,或者是其它类的成员函数.即普通友元函数和友元成员函数.友元函数是定义在类外部.但须要在类体内进行说明,为了与该类的成员函数加以差别.在说明时前面加以keywordfriend.友元函

friend class

友元函数与友元类. C++中以关键字friend声明友元关系.友元可以访问与其有friend关系的类中的私有成员.友元包括友元函数和友元类. 编辑本段1.友元函数 如果在本类以外的其它地方定义了一个函数(这个函数可以是不属于任何类的非成员函数,也可以是其它类的成员函数),在类体中用friend对该函数进行声明,此函数就称为本类的友元函数.一个类的友元函数可以访问这个类中的private成员. 1.1将全局函数声明为友元函数 如果要将一个全局函数(call)声明为本类(Time)的友元函数,则只需

C++:友元(非成员友元函数、成员友元函数、友元类)

3.8  友元:友元函数和友元类 友元函数 :既可以是不属于任何类的非成员函数,也可以是另一个类的成员函数,统称为友元函数.友元函数不是当前类的成员函数,而是独立于类的外部函数,但它可以访问该类所有的成员,包括私有成员.保护成员和公有成员.在类中声明友元函数时,需在其函数名前加上关键字friend,此声明可以放在公有部分.也可以放在保护和私有部分.友元函数可以定义在类部,也可以定义在类的外部. 3.8.1 将非成员函数声明为友元函数 //1.将非成员函数声明为友元函数 // 例3.33 友元函数

变量存储类别

变量定义的一般形式: 存储类别 数据类型 变量名 存储类别指的是数据在内存中存储的方法.存储方法分为静态存储和动态存储两大类.标准C语言为变量.常量和函数定义了4种存储类型:extern.auto.static.register.根据变量的存储类别,可以知道变量的作用域和存储期.这4种存储类型可分为两种生存期限:永久的(在整个程序执行期都存在)和临时的(暂时保存在堆栈和寄存器中).extern和static用来标识永久生存期限的“变量和函数”,而anto和register用来标识临时生存期限的"

C++要点总结

1.内联成员函数 1)隐式声明:将成员函数直接定义在类的内部 2)显式声明:inline标示 2)在类中,使用inline定义内联函数时,必须将类的声明和内联成员函数的定义都放在同一个文件中,否则编译时无法进行代码置换. 2.同类对象赋值 1)对象赋值语句进行对象赋值时,两个对象的类型必须相同 2)数据成员占存储空间,成员函数占相同的函数代码段 3)类中存在指针时,使用默认赋值运算函数赋值,可能错误 3.构造函数 1)跟普通成员函数一样,当构造函数直接定义在类中时,作为内联函数处理 2)一般声明

第六周项目5-友元类

定义下面两个类的成员函数(为体验友元类,实际上本例并不一定是一个好的设计,将两个类的合并为一个DateTime,日期.时间都处理更好). /* * Copyright (c) 2015,烟台大学计算机学院 * All right reserved. * 作者:邵帅 * 文件:Demo.cpp * 完成时间:2015年04月16日 * 版本号:v1.0 */ #include<iostream> #include <cmath> using namespace std; class