
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C++干货基地》《粉丝福利》⛺️生活的理想,就是为了理想的生活!
引入
哈喽各位铁汁们好啊,我是博主鸽芷咕《C++干货基地》是由我的襄阳家乡零食基地有感而发,不知道各位的城市有没有这种实惠又全面的零食基地呢?C++ 本身作为一门篇底层的一种语言,世面的免费课程大多都没有教明白。
classA{public:A(intx){this->_x =x;cout <<"A()"<<endl;}~A(){cout <<"~A()"<<endl;}private:int_x;};intmain(){A a1(1);A a2 =3;return0;}
这里我们既可以使用构造函数来进行赋值,还可以使用隐式类型转换的方法来进行赋值。
这个我相信很好了解,初始化列表不管我们写没写都会在初始化列表进行初始化
- 所以对于简单的变量初始化建议使用初始化列表
- 一些复杂的类初始化可以使用在构造函数体内进行初始化
规则二
🍸 代码演示:
classA{public:A(inta):_a1(a),_a2(_a1){}voidPrint(){cout<<_a1<<" "<<_a2<<endl;}private:int_a2;int_a1;};intmain(){A aa(1);aa.Print();}
大家猜一猜这个程序运行会出现什么情况呢?
A. 输出1 1
B.程序崩溃
C.编译不通过
D.输出1 随机值
这里的答案是选D
虽然我们在初始化列表先写的是 _a1
但是初始化列表是按照声明的顺序来进行初始化的,对 _a2(_a1)
进行初始化的时候 __a1
还是一个随机值,_a2
就被赋值成了 _a1
的随机值
四、点击跳转到网站。取地址及const取地址操作符重载
2.1 取地址操作的意义
取地址操作符顾名思义,就对我们的 &
取地址符号进行重载使其能获取到成员变量的地址
- 但是一般都是默认生成的,除非我们想让取地址符号取的是指定位置的地址
classDate{public:Date*operator&(){returnthis;}constDate*operator&()const{returnthis;}private:int_year;int_month;int_day;};
三、
所以构造函数并不是初始化成员变量的地方,而我们在进行类声明的时候给的的默认值夜也只是声明3.2 初始化列表
在C++中规定了所有成员变量在初始化的时候都是在初始化列表进行初始化的

1.2 const成员函数的注意事项
const 成员可以直接修饰this指针那么使用起来有什么要注意的嘛?
#include<iostream>usingnamespacestd;classDate{public:Date(intyear,intmonth,intday){_year =year;_month =month;_day =day;}voidPrint(){cout <<"Print()"<<endl;cout <<"year:"<<_year <<endl;cout <<"month:"<<_month <<endl;cout <<"day:"<<_day <<endl <<endl;}voidPrint()const{cout <<"Print()const"<<endl;cout <<"year:"<<_year <<endl;cout <<"month:"<<_month <<endl;cout <<"day:"<<_day <<endl <<endl;}private:int_year;int_month;int_day;};voidTest(){Date d1(2022,1,13);d1.Print();constDate d2(2022,1,13);d2.Print();}intmain(){Test();return0;}
- const对象可以调用非const成员函数吗?
- 非const对象可以调用const成员函数吗?
- const成员函数内可以调用其它的非const成员函数吗?
- 非const成员函数内可以调用其它的const成员函数吗?
总结
1. 在成员函数里如果我们只对成员变量读访问,那么建议加上 cosnt指针。explicit关键字- 4.1 构造函数的隐式类型转换
- 4.2 隐式转换的作用
- 4.2 explicit关键字的使用
一、所以本篇专栏的内容全是干货让大家从底层了解C++,把更多的知识由抽象到简单通俗易懂。(否者修改不了成员变量)二、const 成员函数
- 1.1 什么是const 成员函数
- 1.2 const成员函数的注意事项
- 总结
二、