this 到底是什么
this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。
static 成员变量必须在类声明的外部初始化,具体形式为:
type class::name = value;
type 是变量的类型,class 是类名,name 是变量名,value 是初始值。将上面的 m_total 初始化:int Student::m_total = 0;
静态成员变量在初始化时不能再加 static,但必须要有数据类型。被 private、protected、public 修饰的静态成员变量都可以用这种方式初始化。注意:static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。反过来说,没有在类外初始化的 static 成员变量不能使用。
注意:static 成员变量不占用对象的内存,而是在所有对象之外开辟内存,即使不创建对象也可以访问。
- #include <iostream>
- usingnamespace std;
- classStudent{
- public:
- Student(char*name,int age,float score);
- void show();
- private:
- staticint m_total;//静态成员变量
- private:
- char *m_name;
- int m_age;
- float m_score;
- };
- //初始化静态成员变量
- int Student::m_total= 0;
- Student::Student(char*name,int age,float score):m_name(name),m_age(age),m_score(score){
- m_total++; //操作静态成员变量
- }
- void Student::show(){
- cout<<m_name<<"的年龄是"<<m_age<<",成绩是"<<m_score<<"(当前共有"<<m_total<<"名学生)"<<endl;
- }
- int main(){
- //创建匿名对象
- (newStudent("小明",15,90))-> show();
- (newStudent("李磊",16,80))-> show();
- (newStudent("张华",16,99))-> show();
- (newStudent("王康",14,60))-> show();
- return0;
- }
String
c_str(),该函数能够将 string 字符串转换为C风格的字符串,并返回该字符串的 const 指针(const char*)。
用+
来拼接字符串时,运算符的两边可以都是 string 字符串,也可以是一个 string 字符串和一个C风格的字符串,还可以是一个 string 字符串和一个字符数组,或者是一个 string 字符串和一个单独的字符。
s3.erase(5,3); 删除
s2= s1.substr(6,6); 提取
int index = s1.find(s2,5); 查找,返回第几位 ,无结果返回很大值。 第二个参数为从第几位开始查找
int index = s1.rfind(s2,6); 查找,返回第几位,无结果返回很大值。第二个参数是最多查找到第几位