【C++】day04 - 【const对象和const函数】【拷贝构造函数】【静态成员】【成员指针】

一、const对象和const函数

1.1概念

	const对象就是在对象类型上加了const修饰,如:
		const Date date;
	const函数是针对成员函数的,可以在成员函数上加const修饰	
	const函数样例:
		class A{
			public:
			void show()const{//const函数	
			 
			}
			void show(){//非const函数	
			 
			}
		};

1.2 const函数相关知识点一

	const函数和非const函数可以形成重载关系。
	非const对象优先调用非const函数,没有非const函数则选择
		const函数。
	const对象只能调用const函数。
	程序举例:
#include <iostream>
using namespace std;
class A{
   
	public:
	void show(){
   //函数的汇编名字_ZN1A4showEv
		cout << "show()" << endl;
	}
	void show()const{
   
		//const函数的汇编名字_ZNK1A4showEv(多个字母K)
		cout << "show() const" << endl;
	}
	A(){
    }
};
int main(){
   
	A a;
	a.show();//linux终端打印出"show()",说明执行的是非const函数
	const A b;/*定义const对象。前提是类中得有一个构造
	函数才可以 */
	b.show();//linux终端打印出"show()const",说明执行的是const函数
}

1.3 const函数相关知识点二

	const函数不能对成员变量修改(只能读),也不能调用
		非const函数。
	非const函数可以调用const函数。
	如果你非要在const函数中修改成员变量,可以使用mutable。
	程序举例:
#include <iostream>
using namespace std;
class A{
   
	int x;
	public:
	void funx(){
   
		cout << "x=" << x << endl;
	}
	void show()const{
   
	/* funx();//这是错误的。不可以调用非const函数,
		除非funx()是const*/
	/*
		x = 100;这是错误的,不可以修改x,只能读。
		如果你非得改x的值,也可以,方法为:
			在x的定义前加mutable:
				mutable int x;
	*/
		cout << "x=" << x << endl;//查看x的值
	}
	A(){
    x = 100; }
};
int main(){
   
	const A b;
	b.show();
}

二、拷贝构造函数

2.1概念

	如果我们不提供 拷贝构造函数,则系统会提供一个默认的拷贝
	构造函数。
	拷贝构造函数目的是复制对象。
	语法为:
		类型名(const 类型名& par){ 
			
		}

2.2拷贝构造函数的调用时机

时机一:使用同类型的对象创建另外一个对象时。

	如:
		A a;
		A b=a;
		如果自己提供拷贝构造函数,则需要自己完成数据的复制。
#include <iostream>
using namespace std;
struct Date{
   
	int year;
	int month;
	int day;
	public:
	Date(int year=2014,int month=1,int day=1){
   
		cout << "Date(int,int,int)" << endl;
		this-
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
静态数据成员静态成员函数的用法: 静态数据成员静态成员函数一般用于实现与类相关的全局函数,如工具类函数、工厂函数等。静态数据成员静态成员函数可以通过类名和作用域解析运算符::来访问。使用静态数据成员静态成员函数可以提高程序的效率,减小程序的内存开销。但需要注意,静态数据成员静态成员函数都不能访问非静态成员,因此需要根据具体情况选择是否使用。 const修饰对象成员的概念用法: const是C++中的关键字,它用于修饰对象成员。const修饰的对象成员不能被修改,从而保证了程序的安全性和稳定性。 const修饰对象:const修饰的对象不能被修改,它的值在初始化之后就不能被改变。例如:const int a = 10;表示a是一个常量,它的值不能被修改。 const修饰成员:const修饰的成员不能被修改,它在类中一般用于声明常量成员或常量成员函数。例如:const int MAX_SIZE = 100;表示MAX_SIZE是一个常量,它的值不能被修改。又例如:void print() const;表示print()函数是一个常量成员函数,它不能修改类的成员变量,只能读取成员变量的值。 使用const修饰对象成员可以提高程序的安全性和可读性,减少程序的错误。但需要注意,const修饰的对象成员在初始化后不能被修改,因此需要根据具体情况选择是否使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值