1.构造函数: 名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行。---专门用来初始化对象的;
2.访问权限:在类的内部,无论public,protect,private,都可以互相访问;没有限制;
在类的外部,只能是通过对象访问public的成员,不能访问private,protected成员;通过类的内部public的函数访问private;
3. 封装: 外部对象不能访问的设置为private属性,外部对象可以访问的可以设置为public属性,这个为封装。
4. char name[10];
nanme = "xiaoming"; 这个出错的;地址常量不能赋值
改正方法1:
char *name;
nanme = "xiaoming";
改正方法2:
char name[10];
strcpy(nanme , "xiaoming");
5.析构函数
创造对象时用构造函数初始化;
退出的时候用析构函数来退出,进行清理工作;释放分配的内存,关闭打开的文件。----析构函数
Demo()----构造
~Demo()----析构函数 ;
构造函数可以重载;
析构函数只能一个,不能重载,析构没有参数;
6.
const:
1.c++中和#define的作用差不多
在c中修饰的变量不允许改变,但是可以通过指针修改该单元内容,输出的时候是修改后的内容;
在c++中,虽然通过指针修改,但是输出仍然是原来的内容,输出不到内存取值;
2. c++中const的变量只能在本文件中可用,别的文件报错
c没有这种限制;
7.static
C中:
1.修饰局部变量:静态局部变量,执行完释放,初始化一次,
2.修饰全局变量:只能在本文件中使用;
3.修饰函数:只能在本文件使用;
8. This指针
指向当前对象,通过它可以访问当前对象的所有成员。当前对象就是正在使用的对象;
在类的内部使用,可以访问所有的成员,public,private,protect
this只能在非静态成员函数内部使用,在其他地方非法;
this 只能在对象创建以后才能使用;否则非法;
9. static成员变量
static变量属于类,只能在类外部初始化;static变量是几个对象共享使用,相当于全局变量;
外部初始化的格式:
int Student::m_total = 0;
类型 类名::static变量= 数值;
static 成员的访问形式:
1. 类名::static变量
Student::m_total
2.对象.(static变量)
stu.m_total
3.对象指针->(static成员变量)
pstr->m_total
10.static函数
没有this指针,只能访问static成员;声明加static,定义的时候不加
11.const成员函数
可以使用所有的成员,但是不能改变值;
声明和定义函数时都要加const;
const对象只能调用类的const成员
12.友员函数friend
在类外定义的,不属于当前类的函数,可以在当前类中声明,前面加friend,构成友元函数;
友员函数可以访问当前类的private成员;
友元函数不能直接访问类的成员,必须借助对象。
友员的关系是单向的,不是双向的;
13.友员类
友元类的声明:
class Address{
public:
friend class Student;
};
友员关系是单向的;
友员关系不能传递:B是A的友员,C是B友员, C和A之间不是友员关系;
14. string类
a.包含头文件 <string>
string s1; 定义的时候没有初始化,默认是空;
string s2 = "c plus"; 定义并初始化 c plus ,没有\0;
string s3 = s2; 定义s3,并把s2赋值给s3;
string s4 (3,'s');初始化为3个s;
string 输入时,cin是遇到空格默认结束;
string成员可以用下标访问;从0开始;
b. string 中字符串可以使用+,+=进行字符串的拼接;
c. string插入操作,insert
原型: string& insert(size_t pos, const string &str)
d.string删除操作:erase
原型:string& erase(size_t pos = 0,size_t length)
s2.erase(5);把s2第5个元素后面的内容全部删除;
s3.erase(5, 3);s3中第5个后面3个元素删除
e .string中substr
string substr (size_t pos = 0, size_t len = npos) const;
pos 为要提取的子字符串的起始下标,len为要提取的子字符串的长度。
s2 = s1.substr(3, 10);从第3个开始提取10给s2;
f。string查找find查找出现的位置:
其中的两种原型为:
size_t find (const string& str, size_t pos = 0) const;
size_t find (const char* s, size_t pos = 0) const;
15.1继承
一个类从另一个类获取成员变量和成员函数的过程;
被继承的类称为父类或者基类,继承的类称为子类或者派生类;
继承的语法:
class 派生类的名:[继承方式] 基类名{
派生类的成员;
};
继承的方式: public ,private,protect,默认是private;
public成员可以通过对象访问,private只能通过内部函数访问;
protected:也不能通过对象访问;
继承的时候,protected成员可以在派生类中使用,基类的private不能在派生类中使用;
继承的方式:
1.public继承:
基类中public成员在派生类中还是public属性;
基类中protect成员在派生类中protected属性;
.....private在派生类中不能使用;
2.protected继承
基类中public成员在派生类中为protected属性;
.....protected.............protected.....;
.....private在派生类中不能使用;
3. private继承
基类中public成员在派生类中为private属性;
.....protected..............private....;
.....private在派生类中不能使用;
在派生类中访问基类的private成员的唯一方法就是借助基类的非private成员函数;
如果没有这样的成员函数则无法访问;
4, 改变访问权限 using
使用using改变基类成员在派生类中的访问权限;
public改成private,private改成public