最近休整了几日,调整和精进了一下学习计划,今天也是颇有收获,现在分享一下:
今天学习了一下面向对象部分的拷贝构造函数和初始化列表,收获了很多:
1.拷贝构造函数:有些书也把其成为复制构造函数,其作用是将一个对象复制到新创建的对象中。
然后, 1、函数名和类名相同,因为它也是构造函数的一种;
2、第一个参数必须是一个自身类类型的引用,且其他参数都有默认值。
3、第一个参数必须是自身类类型的引用的原因:如果不是引用则需要拷贝它的实参,为了要拷贝实参,又需要调用拷贝构造函数,如此无限循环;
(我在这里发现我对拷贝构造函数的理解还不够,所以明天加强学习)
我在学习过程中有一个自己的收获:其实调用构造函数的一个语句的作用就包含对象实例化这个语句的作业,也就是先实例化出一个对象,然后再调用那个构造函数。
2.初始化列表:这个其实很简单,就是学习了利用函数对属性初始化的又一种方法:
//Hero(string name, int hp) {
// m_Name = name;
// m_Hp = hp;
//}
Hero(string name, int hp) :m_Name(name), m_Hp(hp) {// 初始化列表}
AI运行代码
cpp
前面的部分是构造函数进行初始化,后面就是本节课学的一种新方法;
今天还写了一道关于字符串的题目,这个题本身很简单,但是却暴露我的许多疑点和问题:
这个题的解法我就不写了,我把我那个错误的写法放出来,然后阐述一下我发现的问题:
include
include
using namespace std;
const int n = 101;
bool ABC(char a) {
if (a == 'a' || a == 'e' || a == 'i' || a == 'o' || a == 'u') {
return true;
}
else {
return false;
}
}
string a[n];
int ycnt, fcnt;
int main()
{
int j = 0;
while (cin >> a[j]) {
j++;
}
// fgets(a,n,stdin);
// a[strcspn(a,'\0')]=0
int size = a.size();
for (int i = 0; i < size; i++) {
if (ABC(a[i])) {
ycnt++;
cout << "y:" << a[i] << endl;
}
else {
fcnt++;
cout << "f:" << a[i] << endl;
}
}
cout << ycnt << endl;
cout << fcnt << endl;
return 0;
}
AI运行代码
cpp
这里我遇到了很多疑问:
1.布尔函数的用法;
2.string类型变量的输入输出;
3.
4.(忘记待补充)。
目前解决的问题有:
BOOL 是布尔型变量(逻辑型变量)的定义符,类似于 float、double 等数据类型。但是布尔型变量的值只有真(true)和假(false)。
声明布尔变量,然后这个变量就可以被赋予false和true两种值;
2.string变量待补充。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。明天一定补充完毕。
今天遇到的问题:
刷题状态有时无法保证,有些函数、关键字、头文件的认识不够充分,待学习提高。
————————————————
版权声明:本文为CSDN博主「FMRbpm」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/FMRbpm/article/details/153350782