C++学习(3)

来源:互联网 发布:java替换\ 编辑:程序博客网 时间:2024/05/17 21:43

1.构造函数:  名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行。---专门用来初始化对象的;

2.访问权限:在类的内部,无论publicprotect,private,都可以互相访问;没有限制;

    在类的外部,只能是通过对象访问public的成员,不能访问privateprotected成员;通过类的内部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指针

指向当前对象,通过它可以访问当前对象的所有成员。当前对象就是正在使用的对象;

在类的内部使用,可以访问所有的成员,publicprivateprotect

 

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;

  };

  

 友员关系是单向的;

 友员关系不能传递:BA的友员,C友员, CA之间不是友员关系;

 

 

 

 14. string

 a.包含头文件 <string>

  

  string s1;  定义的时候没有初始化,默认是空;

  string s2 = "c  plus";   定义并初始化 c plus ,没有\0;

  string s3 = s2;    定义s3,并把s2赋值给s3

  string  s4  3, 's'初始化为3s

  

  string 输入时,cin是遇到空格默认结束;

  

  string成员可以用下标访问;从0开始;

  

  b.  string 中字符串可以使用+, +=进行字符串的拼接;

  

  c. string插入操作,insert

  原型:  string& insert(size_t pos, const string &str)

  

  d.string删除操作:erase

  原型:string& erasesize_t pos = 0, size_t length

  s2.erase(5);s25个元素后面的内容全部删除;

  s3.erase(5, 3);s3中第5个后面3个元素删除

  

  e .stringsubstr

  string substr (size_t pos = 0, size_t len = npos) const;

  pos 为要提取的子字符串的起始下标,len 为要提取的子字符串的长度。

  

  s2 = s1.substr(3, 10);从第3个开始提取10s2

  

  fstring查找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 privateprotect,默认是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

原创粉丝点击