首页 > 其他分享 >其他成员与友元

其他成员与友元

时间:2024-04-18 12:46:49浏览次数:7  
标签:友元 const 函数 int 成员 静态 其他

const 常成员函数

常数据成员


Something (int vlaue) : m_value(value) {

}

  • 必须使用初始式初始化
  • 初始化后不可修改

常成员函数


void fun() const;

void Something :: fun() const{

}

const在函数头外

常成员函数不能修改数据成员


void Something :: fun(const Smonething * const this)

const在this前
将this变为指向常量的常指针

常对象

  • 不能修改常对象的公开成员的数据
  • 只能调用常成员函数(公开的)

const T_class t1(1,2)

通过构造函数初始化


t1.a=7; //非法

t2.b=6; //非法

static 静态成员

  • 为同类对象共享
  • 静态成员函数与静态数据成员协同操作
  • 以static声明
  • sizeof 运算符不会作用于静态成员

静态数据成员

class A{
	public:
	    static int count; //用来统计构造函数被调用的次数
	    A(){count++;}
	    int showcount(){
	    return count;
	    };
};
int A::count=0; //必须在类外初始化
  • 私有静态成员也必须在类外初始化
  • 访问方法
    • 使用对象访问
    • 使用时加类名

静态成员函数


static int getvalue(something & b){

	b.m_x = 10;
	return s_value;

}

  • 只能访问静态成员
  • 可以通过参数将对象传入
  • 不能调用非静态成员函数
    • 本质:编译器不为静态成员函数添加this指针

class a{

	public:
		static void fun(int i,x *ptr);
		int dat;

};

void a::fun(int i,x * ptr){
	dat=i; // 错误!!!
	ptr->dat=i; // 正确!!!
}

友元

  • friend 修饰
  • 能够访问类的私有成员全局函数
  • 提高运行效率

友元函数

  • 一个类的友元函数可以访问该类的私有成员
    ![[Pasted image 20231226163459.png]]![[Pasted image 20231226163543.png]]

友元类

  • A时B的友元类,A的成员函数可以访问B的私有成员

特性

  1. 非对称
  2. 非传递

调用

  1. 通过类成员调用
  2. 通过对象参数访问

![[6.3 其他成员函数和友元.pdf]]

标签:友元,const,函数,int,成员,静态,其他
From: https://www.cnblogs.com/AndyYX/p/18143285

相关文章

  • 34-Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别
    需求:在开发过程中,经常会遇到的一个问题是,需要判断某个字符串是不是对象的某个成员属性名,然后根据判断结果去操作这个成员属性参考教程:Java反射获取对象成员属性,getFields()与getDeclaredFields()方法的区别_javadeclaredfields-CSDN博客 可以通过以下方法:getFields(): 获......
  • 其他
    <dependencies><dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.13.1</version></dependency><dependency&......
  • T-SQL——关于求百分比(以及其他语言转百分比)
    目录1.SQL取百分比2.C#取百分比3.JS取百分比shanzm-2024-4-1621:21:451.SQL取百分比示例0:求1/3后取百分比,保留两位小数SELECTCAST(CAST(1*1.0*100/3ASDECIMAL(10,2))ASVARCHAR(50))+'%';--SqlServer2012版本之后:SELECTFORMAT(1*1.0/3,'P')Result;---33......
  • day11_我的Java学习笔记 (static_静态成员变量+静态成员方法_工具类、代码块_静态代码
    0.面向对象进阶1.static静态关键字1.1static是什么,static修饰成员变量的用法Java成员变量成员方法Python类(对象)属性类(对象)方法static修饰成员变量的应用:在线人数统计1.2static修饰成员变量的内存原理1.3static修饰成员方法的基本......
  • Linux内核协议栈skb成员
    struct__sk_buff{ __u32len; __u32pkt_type; __u32mark; __u32queue_mapping; __u32protocol; __u32vlan_present; __u32vlan_tci; __u32vlan_proto; __u32priority; __u32ingress_ifindex; __u32ifindex; __u32tc_index; __u32cb[5]; __u32has......
  • WPF新建viewModel实例化成员的注意事项
    不要用表达式体去初始化一个用做数据源(比如ItemSource)的引用类型成员。比如这种publicList<MainWindowItem>Items=>newList<MainWindowItem>(){newMainWindowItem{title="项目管理",icon="\ue613",type=typeof(项目管理Control),group="内部管理"},new......
  • string类的成员函数size()的类型
    string类的成员函数size()的类型string类的成员函数size()的类型并非是int型,虽然其类型也是整型的一种,但不是int这就导致许多对应的库函数,在针对int型进行比较时,无法比较size()像是max函数:intMAX=0;stringa;cin>>a;MAX=max(MAX,a.size());//出错解决方法很简单:就是......
  • 开启网络共享,局域网内其他设备找不到本设备
    1.高级共享设置开启所有网络的文件共享和发现2.WIN+Rservices.msc进入服务管理 3.找到服务“FunctionDiscoveryResourcePublication4.服务启动 5.网络发现右键刷新,设备出现 ......
  • 前端学习-vue视频学习015-其他API
    尚硅谷视频教程shallowRefshallowReactive浅层次的响应式数据(仅第一层)shallowRef:只能整体修改person.value可以修改,但是person.value.name无法修改shallowReactive:只能修改对象的第一层数据car.brand可以修改,但是car.options.color无法修改主要用处在于:如果数据量非常......
  • Element-plus与其他UI库混用
    原来项目用的是vue3+vite4+vuexy的,vuexy是国外的一个看上去很漂亮的组件库,项目在开发了一段时间后发现vuexy组件库里的表格、日期等组件很难用,但尴尬的是此时项目已经开发了一半,不方便整体更换UI库。寻思可否把Element-plus里好用的组件筛选出来引入到项目里,让她们和正房vuex......