C++共用数据的保护

C++中往往通过使用const,来使数据在一定范围内共享又不能被随意修改。

C++常对象

1.1常对象的一般形式为:
A.Time const t(1,2,3);
B.const Time t(1,2,3);
1.2常对象的数据成员都是常变量而且必须要有初值。
1.3不能调用常对象的非const型的成员函数,即常成员函数。

C++常数据成员

1.1常数据成员的声明。
const int hour;
1.2只能通过构造函数的参数初始化表来对常数据成员的

C++常成员函数

1.1常成员函数的声明。
void get_time() const; //注意const在右边
1.2常成员函数只能引用本类中数据成员的值,而不能修改。
1.3
数据成员非const成员函数const成员函数
非const的数据成员可以引用,也可以改变值可以引用,不可以改变值
const数据成员可以引用不可以改变值可以引用,不可以改变值
const对象的数据成员不允许引用和改变值可以引用,不可以改变值
1.4常成员函数怎么使用?
A.引用const数据成员的值,修改非const数据成员的值
B.如果要求所有的数据成员都不允许改变,可以使对象const,然后用const成员函数进行引用。
C.如果已定义了一个常对象,只能调用其中的const成员函数。

C++指向对象的常指针

1.1将指向对象的指针变量声明为const型,并使之初始化,这样指针值始终保持指向不便。
1.2 Time * const pointer1=&t1;
1.3往往使用常指针作为函数参数以确保其始终指向同一个对象。

C++指向常对象的指针

1.1 const Time *pointer1=&t1;(可以用*来区别指向对象的常指针和指向常对象的指针)
1.2一个常对象只能用指向常对象的指针来指向它,而不能用一般的指针来指向它。
1.3用指针变量作形参时形参与实参的对应关系
形参实参合法否改变指针所指向变量值
指向非const型的指针非const变量的地址合法可以
指向非const型的指针const变量的地址非法 /
指向const型的指针const变量的地址合法不可以
指向const型的指针非const变量的地址合法不可以
1.4指向常对象的指针最常用于函数的形参,目的在于保护形参指针所指的对象,使他在执行过程中不要改变。


C++对象的常引用

1.1通过常引用可以确保对象的值不会改变。如
void fun(const Time &t);
1.2在c++中,经常使用常指针和常引用作为函数的参数,一则防止值被改变,一则是不必建立拷贝,来提高效率。

C++ const型数据的小结

形式含义
Time const t1; 或const Time t1常对象,其值在任何情况下都不能改变
void Time::fun() const常成员函数,可以引用但不能改变本类中的数据成员
Time * const p指向对象的常指针,p的指向不能改变
const Time *p指向常对象的指针,不能改变指向对象里面的值
Time &t1=tt1是Time类对象t的引用








本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/566267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux gcc本地链接lib文件(c静态,动态),GCC中静态连接和动态连接的区别(LINUX下)...

最近正在学习库的用法,写了最基础的libmystring.a的库(里面只有一个add函数),然后编写test程序测试add函数,用ar命令创建好libmystring.a库后,用以下命令编译静态连接的a.outgcc –static test.c –L ./ –lmystring –o a.out得到…

C++对象的动态建立和释放

1.1前面的方法是静态的&#xff0c;而在c中要动态的建立对象可以用new&#xff0c;删除对象用delete。 C对象动态建立和释放 1.1用new运算符之后&#xff0c;返回一个指向新对象的指针。Box *ptnew Box(1,2,3);1.2通过pt来访问这个对象cout << pt->height;cout <&…

linux18.04循环登陆,ubuntu18.04 循环登陆

主要原因是驱动不对&#xff0c;重新按装驱动就是了&#xff0c;按以下步骤进行&#xff1a;1、sudo apt-get remove --purge nvidia-*2、sudo apt-get autoremove3、sudo reboot重新启动后&#xff1a;sudo ubuntu-drivers autoinstallubuntu 18.04 不同桌面的切换 gdm3/light…

C++对象的赋值和复制

C对象的赋值 1.1对象之间的赋值是用“”运算符来实现的&#xff0c;“”在c中扩展为重载运算符来实现对象间的赋值。t1t2;1.2对象赋值是对数据成员的赋值&#xff0c;而不是对成员函数的赋值。因为数据成员占用内存空间&#xff0c;而成员函数只是一段共用代码。1.3类的数据成员…

linux附加重定向,关于Linux:如何将stdout和stderr重定向并附加到带有bash的文件中?...

要将stdout重定向到bash中的截断文件&#xff0c;我知道要使用&#xff1a;cmd > file.txt要重定向bash中的stdout&#xff0c;附加到一个文件&#xff0c;我知道要使用&#xff1a;cmd >> file.txt要将stdout和stderr重定向到截断的文件&#xff0c;我知道要使用&…

C++静态成员

在同类的多个对象之间实现数据共享&#xff0c;往往使用静态成员而不是全局变量。 C静态数据成员 1.1静态数据成员是一种特殊的数据成员。static int height;1.2静态数据成员可以通过类名来引用&#xff0c;也可以通过对象来引用。1.3静态数据成员不属于某一个对象&#xff0c;…

实践平台linux,关于构造Linux系统实践平台的设想

摘 要 当前虽然有很多高校将Linux课程作为本科学生的必修课&#xff0c;但是在高校中专业的Linux实验室却并未普及。在不增加机房管理员工作量以及学生可以充分体验Linux系统性能的前提下&#xff0c;本文提出了一种利用网络来实现Linux系统实践平台的构造方法&#xff0c;并且…

ndk linux 最新版本,NDK各版本下载

翻不了墙的话&#xff0c;可以用迅雷下载最新版本r20https://dl.google.com/android/repository/android-ndk-r20-windows-x86.ziphttps://dl.google.com/android/repository/android-ndk-r20-windows-x86_64.ziphttps://dl.google.com/android/repository/android-ndk-r20-dar…

c语言常用字符串处理函数6,【总结】C语言中常见的字符串处理函数

-------------------------------------------------------------------------------------------C语言中没有字符串类型&#xff0c;但是为了方便对字符串进行操作&#xff0c;提供了许多字符串处理函数。如&#xff1a;输入输出字符串&#xff0c;字符串的拷贝&#xff0c;连…

c语言 样例测试覆盖,白盒测试实例之十一——逻辑覆盖测试

逻辑覆盖测试是通过对程序逻辑结构的遍历实现程序的覆盖。从覆盖源代码的不同程度可以分为以下六个标准&#xff1a;语句覆盖、判定覆盖(又称为分支覆盖)、条件覆盖、判定-条件覆盖(又称为分支-条件覆盖)、条件组合覆盖和路径覆盖。先看一下具体例子的源代码(C语言)&#xff1a…

C++运算符重载函数作为类成员函数和友元函数

C运算符重载函数作为类成员函数 1.1成员函数的重载运算符左侧是一个类对象&#xff0c;而且与运算符函数类型相同。因为必须通过类的对象去调用该类的成员函数&#xff0c;而且只有运算符重载函数和返回值类型相同&#xff0c;运算结果才有意义。1.2将双目运算符重载为友元函数…

C语言辅导试题答案,C语言试题含答案).doc

一、单项选择题(在每小题的四个备选答案中&#xff0c;选出一个正确的答案&#xff0c;并将其代码填入题干后的括号内。每小题1分&#xff0c;共20分)1&#xff0e;程序中定义以下宏 #define S(a,b) a*b若定义 int area; 且令areaS(31,34),则变量area的值为( )A 10B 12C 21D 28…

C++重载流插入运算符与流提取运算符

C重载流插入运算符与流提取运算符 1.1 "<<" 流插入运算符&#xff0c;">>"流提取运算符。1.2对“<<”和“>>”重载的函数的形式如下&#xff1a;istream & operator >> (istream &,自定义的类&);ostream & …

c语言tcp push函数,如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件

我知道技术上FreeBSD中的TCP_NOPUSH和Linux中的TCP_CORK假设是类似的。如何在FreeBSD中使用TCP_NOPUSH调用sendfile之前添加头文件在Linux中&#xff0c;我可以设置TCP_CORK&#xff0c;发送头文件sendfile()&#xff0c;并且取消设置TCP_CORK以在文件前面插入头文件。在FreeBS…

C++不同数据类型的转换

C不同数据类型的转换 C标准类型数据的转换 1.1隐式类型转换&#xff0c;如&#xff1a; int i6; ii7.5; 1.2显式类型转换,如: 类型名(数据) 如int(89.5) 在C语言中 (int)89.5 建议用C的方式。 C用转换构造函数进行类型转换 1.1转换构造函数也是一种构造函数&#xff…

ev3的c语言编程软件,乐高EV3编程软件教育版下载

乐高EV3编程软件教育版官方版是一款用于机器人编程的应用工具&#xff0c;乐高EV3编程软件教育版最新版可以通过可视化图标形式编程&#xff0c;用以控制机器人的各种动作指令&#xff0c;乐高EV3编程软件教育版操作起来比较简单&#xff0c;发挥你的想象&#xff0c;创造无限的…

C++继承与派生

C继承与派生 1.1 C中可重用机制是通过继承这一个机制来实现的。1.2在C中所谓“继承”就是在一个已存在的类的基础上建立一个新的类&#xff0c;已存在的类(例如"马")称为“基类(base class)”或“父类(father class)”&#xff0c;新建立的类(例如“白马”)称为“派生…

Android代码删除通知,Android:从通知中删除通知b

Android&#xff1a;从通知中删除通知b我已经创建了一个应用程序&#xff0c;并且我设法在android通知栏中添加通知。 现在我需要示例如何从事件通知栏中删除该通知&#xff1f;11个解决方案197 votes你可以尝试这个快速代码public static void cancelNotification(Context ctx…

C++三大继承与多级派生

C公用继承 1.1在定义一个派生类时把派生方式指定为public的&#xff0c;称为公用继承&#xff0c;派生类称为公用派生类&#xff0c;基类称为公用派生类。1.2关于公用继承的一段代码:#include <iostream> using namespace std; class student { public: void display(); …

C++派生类的构造函数和析构函数

C派生类的构造函数和析构函数 派生类的构造函数和析构函数 #include <iostream> using namespace std; class student { public: student(int num,char* n):number(num),name(n){} ~student(){cout << "student deconstruted" << endl;} protecte…