class 类前向声明
/* | |
使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是, | |
尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象, | |
也不能在内联成员函数中使用该类的对象。请看下面的程序段: | |
*/ | |
//第一种 | |
#include<iostream> | |
class Fred; //前向引用声明 | |
class Barney { | |
Fred x; //错误:类Fred的声明尚不完善 | |
}; | |
class Fred { | |
Barney y; | |
}; | |
//第二种 | |
class Fred; //前向引用声明 | |
class Barney { | |
public: | |
void method() | |
{ | |
x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用 | |
} | |
private: | |
Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针 | |
}; | |
class Fred { | |
public: | |
void yabbaDabbaDo(); | |
private: | |
Barney* y; | |
}; | |
/* | |
总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。 | |
*/ |
class 类前向声明的更多相关文章
- C++ 类的前向声明
前向声明 在计算机程序设计中, 前向声明是指声明标识符(表示编程的实体,如数据类型.变量.函数)时还没有给出完整的定义.即可以声明一个类而不定义它,只声明类但不知道类的成员变量.函数等具体细节. 如: ...
- 类声明、类作用域、前向声明、this指针、嵌套类、PIMPL 技法 等
一.类声明 //类是一种用户自定义类型,声明形式: class 类名称 { public: 公有成员(外部接口) private: 私有 ...
- C++12.1.4 类的前向声明、不完全类型类
只声明却没有定义的类称为—————–不完全类型,不完全类型不能定义该类型的对象,只能用于定义指向该类型的指针及引用,或者用于声明(不是定义)使用该类型作为形参类型或返回类型的函数. 在创建类的对象之前 ...
- C++ 类的前向声明的用法
我们知道C++的类应当是先定义,然后使用.但在处理相对复杂的问题.考虑类的组合时,很可能遇到俩个类相互引用的情况,这种情况称为循环依赖. 例如: class A { public: void f(B ...
- C++面向对象 - 类的前向声明的用法
C++中的类应当是先定义,然后使用.但在处理相对复杂的问题,比如考虑类的组合时,有可能遇到两个类相互引用的情况,这种情况称为循环依赖. 考虑下面代码: class A { public: void f ...
- C++中类的前向声明的用法
原创文章,未经博主允许禁止转载. C++的类可以进行前向声明.但是,仅仅进行前向声明而没有定义的类是不完整的,这样的类,只能用于定义指针.引用.以及用于函数形参的指针和引用.而不能定义对象(因为此时编 ...
- 转 : c++ 结构体 前向声明
typedef struct tag_guid { ULONGLONG utime; ULONGLONG umac; }tpguid; class A { private: int m_teset1; ...
- C++中类的前向声明
概念 可以声明一个类而不是定义它; class Screen; 这个声明被称为"前向声明".在声明之后,定义之前,类screen是一个不完全类型,即已知Screen是一个类型,但不 ...
- c++中的前向声明
整理于: http://blog.csdn.net/heyutao007/article/details/6649741 http://blog.sina.com.cn/s/blog_68d90fdb ...
随机推荐
- 2018-06-18 Javascript 基础1
js是一门基于对象的若类型语言,他和JAVA没有关系: js标签放置位置:1.内联 2.外部 3.内部: js代码是有执行顺序的,这点和css代码有所区别:当对象没有加载完或者还没加载的情况下js代码 ...
- 题解 洛谷P2959 【[USACO09OCT]悠闲漫步The Leisurely Stroll】
原题:洛谷P2959 不得不说这道题的图有点吓人,但实际上很多都没有用 通过题上说的“三岔路口”(对于每一个节点有三条连接,其中一条连接父节点,另外两条连接子节点)和数据,可以那些乱七八糟的路和牧场看 ...
- HttpRequestUtils post get请求
package com.nextjoy.projects.usercenter.util.http; /** * Created by Administrator on 2016/10/20. */ ...
- XLNet看这篇文章就足以!
文章链接:https://arxiv.org/pdf/1906.08237.pdf 代码链接:英文--https://github.com/zihangdai/xlnet 中文--https ...
- Arthas 使用(二) —— 应用场景
1. ognl获取bean SpringContextUtil,通常代码中会有类似这样的工具类用来获取 bean 实例 @Component public class SpringContextUti ...
- python中copy与deepcopy的区别
目录 区别 python代码举例 区别 高级语言中变量是对内存及其地址的抽象 copy.copy(object), 拷贝的是内嵌套结构的地址引用,当前到结构发生变化的时候,浅拷贝也相应的改变. cop ...
- 08 返回动态页面web框架
08 返回动态页面web框架 动态页面: 网页的内容是动态变化的,不是一直不变的(静态页面:每次显示的内容都是一样) 服务器server端python程序(动态页面版本): import socket ...
- python基本数据类型;字符串及其方法三:
###################判断类型################### ######################################################### ...
- POJ3169
题目链接:http://poj.org/problem?id=3169 AC思路: spfa算法. 设各牛的位置为x[ ]. 对于感情好的牛,即第2到ML+1行:A B D, 有x[B] - x[A] ...
- JS中的var、let、const三者的区别
ES5:var ES6:let.const ES5中的作用域有---全局作用域.函数作用域 ES6中新增了---块级作用域(块级作用域由{}包裹,if语句.for语句中的{}也属于块 ...