码迷,mamicode.com
首页 > 其他好文 > 详细

结构体内的一些操作

时间:2020-07-26 23:02:39      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:写法   opera   lazy   make   public   初始化   类型   img   初始   

结构体内的一些操作

重载

#include <bits/stdc++.h>

using namespace std;

struct test {
	int a, b;
	friend bool operator < (const test &x, const test &y) {
		return x.a < x.b;
	}
} x, y;

int main() {
	
	cin >> x.a >> x.b;
	if(x < y) cout << 1;
	else cout << 0;
	
	return 0;
} 

加&:更快。相当于调用地址进行操作。如果不加&的话会非常慢,相当于把要操作的东西先复制了一遍。

\(const\):保证要操作的东西不被改变。可以更快一点点。

\(friend\):结构体中重载,后面如果有两个参数,必须加\(friend\)。如果在结构体外重载就不用加了。

返回类型:上面的就是返回的\(bool\)类型,因为是重载小于号,别的该返回啥返回啥。

构造函数

#include <bits/stdc++.h>

using namespace std;

struct test {
	int a, b;
    char *ch[2];
	test(int c = 0, int d = 0) : a(c), b(d) { ch[0] = ch[1] = NULL; }	
};

int main() {
	
	test x(1, 3), y;
	cout << x.a << " " << x.b << "\n";
	cout << y.a << " " << y.b << "\n";
	
	return 0;
}

技术图片

? 更简单的初始化,注意要赋值的东西对应好了就行。如果没有赋初值直接就是0。

保护(隐藏)

#include <bits/stdc++.h>

using namespace std;

struct Stack {
	protected:
		int a;
	public:
		void make() {
			cout << ++a; 
		}
} cj;

int main() {
	
	cj.make();
//	cj.a++;

	return 0;
}

? 我们平常写的结构体内的所有东西都是在\(public\)中搞的,\(protected\)里搞的东西只能在这个结构体里用到,上面代码被注释的是错误写法,会报错:
技术图片

结构体内的一些操作

标签:写法   opera   lazy   make   public   初始化   类型   img   初始   

原文地址:https://www.cnblogs.com/czhui666/p/13381870.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!