ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C++语言入门(五)友元及限定符

2021-12-26 12:05:38  阅读:169  来源: 互联网

标签:const 变量 Simple 初始值 C++ 友元及 类型 限定符 函数


一.友元函数

作用:非成员函数访问类中的私有成员

#include<iostream>
using namespace std;

class Simple{
friend void Print(const Simple& s);//友元函数,可以调用Print函数 
	int n;
public:
	Simple(int n):n(n){}
};

void Print(const Simple& s){
	cout << s.n << endl;
}
int main(){
	Simple s(10);
	Print(s);
}

二.const限定符

1.本质:只读

2.写法

const 类型 变量 = 初始值;
const 类型 对象;

类型 const 变量 = 初始值;
类型 const 对象;

注:

  • 定义时必须初始化
  • 全局作用域声明的const变量默认作用域是定义所在文件
  • const对象只能调用const成员函数

3.const与指针

1 const指针类型* const 变量 = 初始值; 指针指向地址不能改变
2指向const对象的指针

const 类型* 变量 = 初始值;

类型 const* 变量 = 初始值;

指针指向对象不能改变
3指向const对象的const指针const 类型* const 变量 = 初始值;指针指向地址和对象不能改变

 4.const与引用

类型 const &变量 = 初始值;const 类型& 变量 = 初始值;都是引用对象不能改变。

5.const与函数的参数和返回值

类型语法作用说明
const参数返回值类型 函数(const 类型 形参)函数内部不能改变参数的值这样的参数的输入值
const返回值const 返回值类型 函数(形参列表)函数的返回值不能改变常用于字符串/指针
const修饰位置作用
变量变量不可修改,通常用来替代#define
对象/实例对象的成员变量不可修改,只能调用const成员函数
函数参数参数不能在函数内部修改,只作为入参
函数返回值返回的结果不能被修改,常用于字符串
成员变量只能在初始化列表中初始化
成员函数不改变成员变量
#include <iostream>

using namespace std;

class Test{
public:
    void Print() const{
        cout << "Test" << endl;
    }
};

void Func(const Test& t){
    t.Print();
}
int main(){
    Test t;
    Func(t);// 变量
    Func(Test());// 匿名对象
    const Test t2;
    Func(t2); // 只读对象
    t2.Print();
}

三.static限定符

1.本质:

  • 生存周期:整个程序的生存周期。
  • 作用域:属于类,不属于对象。

2.语法

class 类名{
    static 返回类型 函数(形参列表);
};

 3.调用

①通过类名:

类名::函数(实参列表);

②通过对象:

对象.函数(实参列表);

例:

#include<iostream>
using namespace std;

class Simple{
public:
	static int n;//将不能在初始化列表里初始化,将只能在类外面初始化 
	//Simple(int n):n(n){}//初始化列表 
	/*Simple(int n){//构造函数可以没有 
		this->n = n;
	}*/
	void Print(){
		cout << n << endl;
	}
};

int Simple::n = 0;//要早早初始化 

int main(){
	Simple::n = 1000; //也可以用类名直接访问 
	Simple s;
	s.n = 200; // 用对象访问 
	s.Print();
	cout << sizeof(s) << endl;//static对象不算在类里 
	
	Simple s2;
	s2.Print();
} 

注:

  • 在类定义中声明,但是在类实现中初始化。
  • 在声明时需要指定关键字static,但是在类外定义时不要指定static
  • 对象的大小不包含静态成员变量

 四.const static限定符

既有static的特点又有const的特点

#include <iostream>

using std::cout;
using std::endl;

class StaticConstTest{
public:
    void print(){
        cout << test1 << " " << test2 << endl;
    }
private:
    static const int test1 = 1;//static const/const static成员变量在类初始化必须是数字类型。
    static const int test2;
};

/* static */ const int StaticConstTest::test2 = 2;//变量声明处或者类外初始化

int main(){
    StaticConstTest sct;
    sct.print();
}

 

标签:const,变量,Simple,初始值,C++,友元及,类型,限定符,函数
来源: https://blog.csdn.net/m0_60288340/article/details/122151863

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有