首页 > 其他分享 >struct & class 以及前向声明

struct & class 以及前向声明

时间:2023-11-17 22:23:37浏览次数:24  
标签:struct int void 前向 声明 class

class与struct的唯一区别在于:

class属性中,缺省的默认为private属性,而在struct中,缺省的默认为public属性

如下,i与p没有显式的访问控制,由于其在class中,故为private

class A{
	int i;
	int *p;
}

在C++中建议首选class,但在类简单到无以复加的情况下,也可以使用struct

前向声明

不用使用内部细节时,用前向声明让编译器知道其是什么东西来让编译通过即可。

但若需要使用细节,如下面代码,那么前向声明也不够用

struct Y{
	void f(X c);			
}
struct X;//前向声明,告诉编译器X是个东西,具体是什么东西你不要管

struct Y{
    void f(X*);							
    //前向声明为了让该句编译能够通过(任何指针大小都一样,故编译器不知道X到底是什么也无所谓)
    //注意这里不能写成void f(X c);
}

//把X的definition放在后面是因为其用到了Y,所以这必须要在Y的后面
struct X{
private:
	int i;
public:
	void initialize();
	friend void g(X*, int);
	friend void Y::f(X*);    //这里使用到了Y的内部结构,故用前向声明不行。
	friend struct Z;
	friend void h();

}

标签:struct,int,void,前向,声明,class
From: https://www.cnblogs.com/3-141592653589/p/17839795.html

相关文章

  • 《A Survey on Deep Learning-based Fine-grained Object Classification and Semanti
    论文标题《ASurveyonDeepLearning-basedFine-grainedObjectClassificationandSemanticSegmentation》基于深度学习的细粒度对象分类和语义分割的综述为什么是“Object”而不是“image”作者西南交通大学和新加坡国立大学2016年7月1日received;2016年9月30日......
  • js给多个具有相同class的元素绑定同一个事件或者样式
    <buttonclass="btn1">month1</button><buttonclass="btn1">month2</button><buttonclass="btn1">month3</button>若要给上面3个都具有btn1的class的按钮,添加同样的点击事件,则如下操作:$(".btn1").each(function(){......
  • SQL(Structured Query Language)简介和常见 SQL 命令示例
    简介SQL(StructuredQueryLanguage)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是SQL的一些重要方面:SQL的目的......
  • python 处理html中 class中存在空格 获取问题
     html="""<h1class='tdp1'>0000000000000000000000000</h1><h1class='tdp2'>123333333333333333333</h1><h1class='p2'>111111111111111111111111111111111111<......
  • SQL(Structured Query Language)简介和常见 SQL 命令示例
    简介SQL(StructuredQueryLanguage)是一种用于访问和操作关系型数据库的标准语言。它是一个功能强大的语言,用于执行各种数据库操作,包括检索数据、插入新记录、更新记录、删除记录、创建数据库、创建新表、设置权限以及执行存储过程和视图等。以下是SQL的一些重要方面:SQL的目......
  • CART(Classification and Regression Trees)
    CART(ClassificationandRegressionTrees)是一种常用的决策树算法,既可以用于分类问题,也可以用于回归问题。CART算法由Breiman等人于1984年提出,是一种基于递归二分划分的贪婪算法。以下是对CART算法的详细解释:1.决策树的构建过程:CART算法通过递归地将数据集划分为越来越纯的子集......
  • uniapp打包Android,出现崩溃Didn't find class "io.dcloud.application.DCloudApplicat
    自己创建的新的Android项目打包的时候一直崩溃,报错:Didn'tfindclass"io.dcloud.application.DCloudApplication"查找之后在app/build.gradle中发现添加multiDexEnabledtruecompileOptions{sourceCompatibilityJavaVersion.VERSION_1_8targetCompatibilityJavaV......
  • 获取所有指定类名的元素:getElementsByClassName 注意是带s的
    下列不属于javascript中查找元素的方法的是()AgetElementByClassName()BgetElementsByTagName()CgetElementById()DgetElementsByName()正确答案:A选择A错在Elements。因为这个方法可以返回一组节点。A.获取所有指定类名的元素:getElementsByClassNamevarx=documen......
  • Natural Image Reconstruction from fMRI using Deep Learning: A Survey
    NaturalImageReconstructionfromfMRIusingDeepLearning:ASurveyZarinaRakhimberdina1,3,QuentinJodelet1,3,XinLiu2,3,∗,TsuyoshiMurata1,3一句话概括:介绍了各种自然图像重构方法(生成模型和非生成模型)以及评价指标,并提出了综合评价各模型的方法。介绍fMR......
  • class的声明特征跟const和let类似,都是作用于块级作用域,都有暂时性死区, 预处理阶段则
    依据以下JS代码,在位置A打印变量a与在位置B打印变量a各会有怎样的输出?vara=1;functiontest(){//位置Aclassa{}//位置B}test();A1、classa{}B报错、classa{}C报错、报错D1、报错正确答案:Bclass的声明特征跟const和let类似,都是作用于块级作用域......