C++——成员变量和成员函数

发布时间 2023-11-30 20:36:13作者: 辰令

C++

类的成员变量

类的成员函数
 成员函数是在类体中定义的。也可以在类体中只写成员函数的声明,而在类的外面进行函数定义
  类体中直接定义函数时,不需要在函数名前面加上类名,因为函数属于哪一个类是不言而喻的
  成员函数在类外定义时,必须在函数名前面加上类名,予以限定(qualifed),
    " :: "是作用域限定符(field qualifier)或称作用域运算符,用它声明函数是属于哪个类的

 函数后面加一个冒号表示函数的定义是在类的内部进行的,这种函数被称为类成员函数。
 类成员函数可以访问类的私有成员和保护成员,也可以访问公有成员。
 此外,类成员函数还可以被其他函数或类调用。
 在类的定义中,类成员函数通常被声明在公有部分或私有部分
 
 将const修饰的类成员函数称之为const成员函数;
   const修饰类成员函数,(本质)实际上修饰该成员函数隐藏的this指针,表明在该成员函数中不能对类的任何成员进行修改
 它可以被指定为private(私有的)、public (公用的)或protected(受保护的)。  
 权限(它能否被调用)以及它的作用域(函数能使用什么范围中的数据和函数)
 
static用于定义静态成员或静态变量 
   静态成员变量   静态成员函数

6个默认的成员函数

类的6个默认成员函数
1初始化和清理
   1、构造函数 
   2、析构函数   .析构函数名是在类名前加上一个字符‘~’。
 2、拷贝赋值
     拷贝构造函数概念
     运算符重载 赋值运算符重载 
 3、const成员
     const修饰类的成员函数
     取地址及const取地址操作符重载
在类体中定义的成员函数会自动成为内联函数 类体内部定义的函数默认就是内联函数。
希望将函数定义在类体外部,又希望它是内联函数,那么可以在定义函数时加 inline 关键字

其他函数

 全局函数,即非成员函数的一般普通函数	

调用

/对象调用成员函数	 
 指针调用
 引用调用

指针和引用

 智能指针:shared_ptr 、unique_ptr、weak_ptr
 强制类型转换 关键字:static_cast、dynamic_cast、reinterpret_cast和 const_cast	 

初始化列表

  构造函数的初始化列表,以冒号开始,冒号后面依次列出需要赋值的成员变量和值。
 么时候需要使用初始化列表?
  (1)当有成员变量是 引用类型 时
        必须初始化引用 即使在构造函数里面赋值也不行,此时必须使用初始化列表
  (2)当有数据成员是 常量 时
       必须初始化常量
  (3)当父类的构造函数 有参数 时
       没有合适的默认构造函数可用
  (4)当成员变量所属类型的构造函数 有参数 时
初始化列表的初始化顺序是由数据成员的声明次序决定的,不是由初始化列表的排列次序决定的。  
//初始化列表的方式
Test()
:m_ia(0),m_ib(1)
{	
} 

C++模板

 c++ 有两种类型的模板
  1:函数模板(function tempalte):使用泛型参数的函数(function with generic parameters)
  2:类模板(class template):使用泛型参数的类(class with generic parameters)
 template <typename T,std::size_t n = DefaultStackSize>

 shared_ptr和unique_ptr在初始化
   std::shared_ptr<Frame> f1(new Frame(), del1);
   通过构造函数初始化
     // shared_ptr<T> 类模板中,提供了多种实用的构造函数, 语法格式如下:
     std::shared_ptr<T> 智能指针名字(创建堆内存);
   
   
    template < class T, class Alloc = allocator<T> > class vector; // generic template 
    std::vector<int> first;