空指针访问成员函数 C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针 如果用到this指针,需要加以判断保证代码的健壮性 示例: //空指针访问成员函数 class Person { public: void ShowClassName() { cout << "我是Person类!" << endl; } void ShowPerson() { if (this == NULL) { return; } cout << mAge << endl;
PS:注意:一个空的类只占一个字节(为了区分空对象所占内存的位置),但是类里有了非静态成员变量后就占变量所对应的字节。
常函数 1.在成员函数后面加上const后我们称这个函数是常函数 2.常函数内不可以修改成员属性 3.成员属性声明时加关键字mutable后,依然可以在常函数中修改 常对象 1.声明对象前加const称该对对象为常对象 2.常对象只能调用常函数 3.成员属性声明时加关键字mutable后,依然可以在常对象中修改
这样的global实际上是一个常量,这是C++用来取代宏定义的其中一种措施,const常量有类型检测,提高编译器的效率。
对象数组 如果构造函数只有一个参数,在定义数组时可以直接在等号后面的花括号内提供。Student stud[3]={90,92,01};//合法 如果构造函数有多个参数,则不能用在定义时直接所提供所有实参的方法。 但可以如下定义: //构造函数有三个参数:学号,年龄,成绩 Student stud[3]{ Student(1000,19,22); Student(1001,19,22); Student(1002,19,22); }; 对象指针 指向对象的指针 class Box {public:
常函数: 成员函数后加const后我们称这个函数为常函数; 常函数不可以修改成员属性 成员属性声明时加关键字mutable后,在常函数中依然可以修改 常对象: 声明对象前加const 常对象只能调用常函数 常函数: #include<iostream> using namespace std; class Person { public: int age; mutable int tmp;//用mutable修饰的为特殊变量,可以在常量函数中修改 void showPerson()
常数据成员的值是不能改变的,只能通过构造函数的参数初始化表对常数据成员进行初始化,不能采用在构造函数中对常数据成员赋初值的方法。
实际上和const修饰结构体一样,当需要打印数据时,并且当数据量太大,不想复制一份数据到内存空间时,就传一个地址或者引用,此时形参改变,实参也会跟着改变,所以此时需要防止实参被修改!
常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。因此,定义或说明常类型时必须进行初始化。 概述 1. const有什么用途? 在 c程序中,const的用法主要有定义常量、修饰函数参数、修饰函数返回值等3个用处。 在c++程序中,它还可以修饰函数的定义体,定义类中某个成员为常态函数,即不改变类中的数据成员。 被const修改的东西都要受到强制保护,可以预防意外的变动,能提高程序的健壮性。 2. const与#define相比有什么不同? 它们都可以用来定义常量,但c
在C++中,每一个成员函数中都包含一个特殊的指针,指针的名字是固定的,称为this,它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址。
在C语言里面const是用来修饰变量的,那么在C++里面const是用来修饰什么,在C++lconst实际修饰的是this指针,上面的代码在编译器看来是下面这个样子的
使用对象指针实参仅将对象的地址值传递给形参,而不进行副本的拷贝,这样可以提高运行效率,减少时间开销
mutalbe的中文意思是“可变的,易变的”,是constant(即C++中的const)的反义词。在C++中,mutable也是为了突破const的限制而设置的,被mutable修饰的变量将永远处于可变的状态。
mutalbe的中文意思是“可变的,易变的”,是constant(即C++中的const)的反义词。在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量将永远处于可变的状态。
(2)不能将const 类型的实参传递给形参为non-const 类型引用的函数。
const是C语言的关键字,经C++扩充,功能变得强大,用法复杂。const用于定义一个常变量(只读变量)。当const与指针、引用、函数等结合起来使用时,情况会变得更加复杂。下面将从七个方面总结const的用法。
这将创建一个名为 SQUARE 的宏,它接受一个参数 x,并返回 x * x 的结果。比如可以在代码中使用 SQUARE(5) 来得到 5 的平方。
C/C++语言是一种通用的编程语言,具有高效、灵活和可移植等特点。C语言主要用于系统编程,如操作系统、编译器、数据库等;C语言是C语言的扩展,增加了面向对象编程的特性,适用于大型软件系统、图形用户界面、嵌入式系统等。C/C++语言具有很高的效率和控制能力,但也需要开发人员自行管理内存等底层资源,对于初学者来说可能会有一定的难度。
加起来就是:定义一个返回值类型为度 int 参数为void 名为GetX 的常知函数;
包含常量区;主要是存放全局变量,静态变量,字符串常量,const修饰的全局变量, 不包括const修饰的局部变量(区域的数据在程序结束后由操作系统释放)
在我们使用c/c++的时候,或者在面试的时候,会被问道与const相关的问题,比如const修饰放在指针的哪个位置,const修饰的引用传递与值传递等等,这些究竟是什么个情况,本节就是专门来解决const的疑难杂症,干掉const,offer拿到手软!
构造/析构 函数: 构造函数与类名相同,没有返回值,不写void,可以发生重载,可以有参数
实参通常是通过值传递给函数的,这意味着形参接收的只是发送给它们的值的副本,它们存储在函数的本地内存中。对形参值进行的任何更改都不会影响原始实参的值。
如果未写明限制幅(public: private: protected: )则默认为私有
Hello,大家好!我是木荣。温故而知新,可以为师矣。作为一名攻城狮,扎实的基本功是解决问题及完成工作中任务的重要前提。没有良好的基本功作为铺垫,一味的追求知识的宽度是毫无意义,知其然更要知其所以然。因此,在平时和小伙伴们聊天时,在谈到学习技术方面的问题,我会告诉他们注重基本功。所以,最近文章会总结一些日常编程工作中常用的重要基本知识点,根据平时工作中常用的也是重要的知识点逐步展开。
对象的赋值只对其中的数据成员赋值,而不对成员函数赋值,类的数据成员中不能包括动态分配的数据,否则在赋值时可能会报错。
我们把前面创建的UserDto对象引用复制给userDto了,然后又对对象中的两个属性进行重新赋值,userDto1也会随着赋值的。这就是所谓的浅克隆(浅复制)。
等小写字母或字符串表示,称为常元(constants) 个体变元(variables):不确定的个体常用字母
C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,通过查阅资料,将const作用归纳如下:
1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的。 2. ::叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。::可以不跟类名,表示全局数据或全局函数(即非成员函数)。 3.类名加载成员函数名之前而不是加在函数的返回类型前。 错误:Tdate::void Set(int m , int d , int y) {} 正确: void Tdate::Set(int m , int d , int
在我们已经基本了解了类的由来,和其六大基本默认函数后,此时我们再回过头来看,其中的构造函数。在前文已经说过构造函数的作用为初始化成员变量,但是真的就这么简单了吗?如果成员变量为常变量(const)那还能构造成功吗?在构造函数体内部,我们直接可以用类的成员变量来赋值,但是在调用构造函数前是没有这个类对象的,既然都没有这个类对象,哪前面我们直接用来赋值的类中的成员变量是哪里来的?
今天老九君给大家分享一些Java面试需要的题目哟~ 01 anonymousinnerclass(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实现)interfac
C++中的const关键字的使用方法很灵活,而使用const将大大改善程序的健壮性,本人依据各方面查到的资料进行总结例如以下,期望对朋友们有所帮助。
答:多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。 C++中,实现多态有以下方法:虚函数,抽象类,重载,覆盖,模板。
相关视频——黑马程序员匠心之作|C++教程从0到1入门编程,学习编程不再难_哔哩哔哩_bilibili(84-146)
@XmlRootElement注解定义xml的根节点 通过name改变根节点的xml值
例程中声明一个命名空间Test,Test中声明一个结构体Account,而Account中定义变量和声明函数。
相信在坐的很多人,都在学Python,对于Python来说有self,类比到C++中就是this指针,那么下面一起来深入分析this指针在类中的使用!
在C++中输入输出到指定文件,或者从指定文件中读出数据使用fstream类较为方便。
C++的iostream标准库介绍(3) C语言提供了格式化输入输出的方法,C++也同样,但是C++的控制符使用起来更为简单方便,在c++下有两中方法控制格式化输入输出。 1.有流对象的成员函数。 例如,下列程序以成员函数的方式控制输出的精度: //程序作者:管宁 //站点:www.cndev-lab.com //所有稿件均有版权,如要转载,请务必著名出处和作者 #include <iostream> using namespace std;
如果我们在定义一个对象之后,不希望在后面对这个对象进行修改,那么我们可以把这个对象声明为const对象。 声明为const对象之后,这个对象的所有数据成员后面都不能被修改!
(1)定义函数指针的语法形式比较复杂,常借助于typedef类型定义符来简化函数指针的定义。
掌握文本文件读写的方法 了解二进制文件的读写方法C++文件流: fstream // 文件流 ifstream // 输入文件流 ofstream // 输出文件流
extern那些事 extern "C" 是放在.cpp文件中,而不是放在.c中,不然会有编译错误。放在.c的情况都是加上了#ifdef __cplusplus#endif即用来识别当前文件用C++进行编译,所以才不会报错。 static那些事 静态成员变量未赋值的存放在bss段,赋值过就放在data段. 类的静态数据成员如成员函数或者成员变量,不依赖于类对象本身,即类中的静态数据成员由对象共享。因此静态变量不能使用构造函数初始化;静态函数仅能访问静态数据或静态成员函数。 静态类对象和静态对象(变量)一样,
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
配套视频: https://www.bilibili.com/video/BV1et411b73Z 只是为方便学习,不做其他用途,在此发布C++基础入门部分配套讲义,原作者为黑马程序
领取专属 10元无门槛券
手把手带您无忧上云