2017.1.18

来源:互联网 发布:apache python3 编辑:程序博客网 时间:2024/04/28 10:46
1. 2010编译器,swap代码时,传值和地址都能改变数值,有问题,待查






2.构造函数:  名字和类名相同,没有返回值,也不需要显式调用,在创建对象的时候自动执行。---专门用来初始化对象的;
3.访问权限:在类的内部,无论public,protect,private,都可以互相访问;没有限制;
   在类的外部,只能是通过对象访问public的成员,不能访问private,protected成员;通过类的内部public的函数访问private;
   
4. 封装: 外部对象不能访问的设置为private属性,外部对象可以访问的可以设置为public属性,这个为封装。


5.  char name[10];
 nanme = "xiaoming"; 这个出错的;地址常量不能赋值
 改正方法1:
char *name;
 nanme = "xiaoming";
 改正方法2:
char name[10];
 strcpy(nanme , "xiaoming"); 
 
 
6.析构函数
创造对象时用构造函数初始化;
退出的时候用析构函数来退出,进行清理工作;释放分配的内存,关闭打开的文件。----析构函数
Demo()----构造
~Demo()----析构函数  ;


构造函数可以重载;
析构函数只能一个,不能重载,析构没有参数;




7.
const:
1.c++中和#define的作用差不多
在c中修饰的变量不允许改变,但是可以通过指针修改该单元内容,输出的时候是修改后的内容;
  在c++中,虽然通过指针修改,但是输出仍然是原来的内容,输出不到内存取值;
2. c++中const的变量只能在本文件中可用,别的文件报错
  c没有这种限制;
  
8.static
C中:
1.修饰局部变量:静态局部变量,执行完释放,初始化一次,
2.修饰全局变量:只能在本文件中使用;
3.修饰函数:只能在本文件使用










2017.1.18


1. This指针
指向当前对象,通过它可以访问当前对象的所有成员。当前对象就是正在使用的对象;
在类的内部使用,可以访问所有的成员,public,private,protect


this只能在非静态成员函数内部使用,在其他地方非法;
this 只能在对象创建以后才能使用;否则非法;




2. 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
  
  
  
  3.static函数
  没有this指针,只能访问static成员;声明加static,定义的时候不加
  
  
  4.const成员函数
  可以使用所有的成员,但是不能改变值;
  声明和定义函数时都要加const;
  
  const对象只能调用类的const成员
  
  
  
  5.友员函数friend
  在类外定义的,不属于当前类的函数,可以在当前类中声明,前面加friend,构成友元函数;
  友员函数可以访问当前类的private成员;
  
  友元函数不能直接访问类的成员,必须借助对象。
  
  
  友员的关系是单向的,不是双向的;
  
  6.友员类
  友元类的声明:
  class Address{
  public:
  friend class Student;
  };
  
 友员关系是单向的;
 友员关系不能传递:B是A的友员,C是B 友员, C和A之间不是友员关系;
 
 
 
 7. 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;






4.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
    
    存在问题: 在派生类中无法访问基类中private成员,如何用using修改,编译的时候报错;
0 0
原创粉丝点击