C++特殊成员详解

 更新时间:2021年11月24日 10:15:59   作者:why are you so serious  
这篇文章主要为大家介绍了C++特殊成员,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助

const成员

1.const数据成员:const类型变量不可修改(只读模式),必须采用初始化参数列表的方式初始化。

2.const成员函数:const写在小括号的后面,常成员函数不能修改数据成员(只读),常成员函数与普通函数同时存在时,函数名相同时,普通对象有限调用普通函数,普通对象可以调用常成员函数。

3.const对象:const修饰的对象,只能调用常成员函数。

#include<iostream>
#include<string>
using namespace std;
class king{
public:
	king(int data) :num(data)//初始化参数列表初始化数据
	{
		cout << num << endl;
	}
	void print()const//常成员函数
	{
		cout << "hello!" << endl;
	}
	void printdata()//普通函数
	{
		str = "lijue";
		cout << str << endl;
	}
protected:
	string str;
	const int num;//常数据成员
};
int main(){
	king prince(18);
	prince.print();//普通对象调用常成员函数
	const king boy(12);
	boy.print();//常对象调用常成员函数
	while (1);
	return 0;
}

static成员

#static属于类,是所有对象共有的,可以当对象调用

1.static数据成员:必须在类外初始化,不需要static修饰,需要类名限定(::),不允许初始化参数列表的方式初始化。

2.static成员函数:static写在函数的前面,调用非静态数据成员必须要指定对象。

3.static对象:释放是最后释放的。

#include<iostream>using namespace std;class desk{public:static  void print(desk&chair){chair.data1 = 12;cout << chair.data1//非静态数据成员调用静态成员函数必须指定对象<< "\t" << data //静态数据成员的调用可以不需要指明对象<< endl;                  }protected:static int data;//静态数据成员int data1;//非静态数据成员};int desk::data = 50;int main(){desk chair;chair.print(chair);while (1);return 0;}

友元类

#什么是友元:用friend描述的关系,友元只是提供一个场所,赋予对象打破权限的限定

1.友元函数:分为普通友元函数和以另一个类的成员函数充当友元函数。

//普通友元函数,可以打破权限的限制
#include<iostream>
using namespace std;
void print();
class myfriend{
public:
protected:
	int data = 150;
	friend void print(myfriend&k){
		cout << k.data << endl;
	}
};
int main(){
	myfriend k;
	print(k);
	while (1);
	return 0;
}
//以另一个类的成员函数充当友元函数
#include<iostream>
using namespace std;
class myfriend;
class I{
public:
	void print();
protected:
};
class myfriend{
public:
	friend void I::print();
protected:
	int data = 150;		
};
void I::print()
{
	myfriend k;
	cout << k.data << endl;
}
int main(){
	I K;
    K.print();
	while (1);
	return 0;
}

2.友元类

//友元类
#include<iostream>
using namespace std;
class A;
class B{
public:
	friend class A;
protected:
	int data = 123;
};
class A{
public:
	void printData()
   {
		B l;
		cout << l.data << endl;
   }
protected:
       };
int main()
{
	A l;
	l.printData();
	while (1);
	return 0;
}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • C语言实现简单航班管理系统

    C语言实现简单航班管理系统

    这篇文章主要为大家详细介绍了C语言实现简单航班管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-12-12
  • C++类和对象之多态详解

    C++类和对象之多态详解

    大家好,本篇文章主要讲的是C++类和对象之多态详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • C语言运算符及其优先级汇总表口诀

    C语言运算符及其优先级汇总表口诀

    由于C语言的运算符优先级与C++的不完全一样(主要是增加了几个运算符),所以这个口诀不能完全实用于C++.但是应该能够兼容,大家可以比较一下他们的区别应该就能够很快掌握C++的优先级的
    2013-07-07
  • C语言从零探索函数的知识

    C语言从零探索函数的知识

    函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数,让我们一起来了解它
    2022-04-04
  • c++  复制消除问题解决示例详析

    c++  复制消除问题解决示例详析

    这篇文章主要为大家介绍了c++  复制消除问题解决示例详析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • C++链表类的封装详情介绍

    C++链表类的封装详情介绍

    这篇文章主要介绍了C++链表类的封装,文章基于C++的相关资料展开主题的详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-04-04
  • C语言常用占位符的使用小结

    C语言常用占位符的使用小结

    占位符是一种用于格式化输出的特殊字符,通常用于 printf() 等输出函数中,本文主要介绍了C语言常用占位符的使用小结,非常具有实用价值,需要的朋友可以参考下
    2023-05-05
  • C语言详细分析讲解流程控制语句用法

    C语言详细分析讲解流程控制语句用法

    C语言语句的执行默认顺序执行(从上往下依次执行),编程语言一般除了默认的顺序执行以外,还提供分支执行和循环执行的语法,让我们一起来看看
    2022-05-05
  • C语言解读数组循环右移问题

    C语言解读数组循环右移问题

    这篇文章主要介绍了C语言解读数组循环右移问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C语言数据结构进阶之栈和队列的实现

    C语言数据结构进阶之栈和队列的实现

    栈和队列,严格意义上来说,也属于线性表,因为它们也都用于存储逻辑关系为 "一对一" 的数据,但由于它们比较特殊,因此将其单独作为一章,做重点讲解
    2021-11-11

最新评论