1、类的const成员函数
const成员函数的const 实际修饰的是该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
class A {void fun() const {// 常成员函数,在函数名后用const修饰}
}
一文带你入门C++类和对象【十万字详解,一篇足够了】_c++ 入参是对象类型-CSDN博客
2、类模板template
一同感受C++模版的所带来的魅力-CSDN博客
template<typename T1, typename T2>
class A {// 使用T1 T2// 类外定义成员函数时,也需要添加 template<typename T1, typename T2>
};
注:1、模板声明只允许在全局、命名空间或类范围内使用!故不能在main函数中直接定义。
2、使用模板时,声明和定义不在同一个文件会出问题:
模板的声明是在.h文件,定义是在.cpp文件,因编译时只产生声明的代码,故编译不会出错,但是当调用时会产生找不到类或者函数的问题。
解决方法:1、将模板的声明和定义放在同一个文件中;2、主函数中调用#include<.cpp>或者将.cpp文件改为.hpp文件再引用。
3、CPP中 '' 和 "" 的区别
c++中' '和“ ”的区别_c++""与-CSDN博客
"a"是字符串,会在结尾添加\0; 而'a'是字符,只有单个字符。
实际上,"a"在内存中一般占2个字节,即 sizeof("a")=2,因为它后面还有一个\0结束符。
单引号里的内容表示是字符,所以 sizeof('a')=1
因此字符串可以是"abcde"这样的,而 'abcde' 这样就是错误的。
注意:在C语言中,sizeof('a')=4(字符在C语言中是用int型数据存储的)。
4、CPP字符数组的两种初始化方式
首先,对于给定的 字符数组 char c[3]; 通过 cout<<c; 进行输出,会直接输出数组c里面保存的内容,直到遇见结束符\0为止。如果在字符数组里面没有结束符,那么会继续一直向后输出...
对于字符数组 char c[2] ,可以通过两种方式初始化:
(1)使用普通数组形式初始化
char c[2]; //随机分配值
cout<<c; //输出字符串,cout直到\0才停止的,输出为烫烫烫烫。。。char c[2]={'f'}; //c[1]的值为\0;
cout<<c; //只会输出f,因为系统自动添加\0了,输出为fchar c[2]={'f','u'};
cout<<c; //输出字符串,cout直\0才停止的,所以输出是fu烫烫烫...
(2)字符串形式初始化
char c[2]="fu"; //系统报告错误,因为如果按字符串使用字符数组,要留一位\0char c[2]="f"; //正确
总结:字符数组虽然可以当作字符串来用,但是有限制。
1、初始化时要预留一位\0(系统会默认添加),输出字符串时才可以不至于烫烫;
2、输出时cout<<str, str为数组名,cout当检测要输出字符串时,输出规则是 直到遇到\0才会停止,这也是烫烫的原因。