C++ 学习 ::【基础篇:09】:C++ 类的认识及基本声明定义;简单对比C++中类与结构体的区别

本系列 C++ 相关文章 仅为笔者学习笔记记录,用自己的理解记录学习!C++ 学习系列将分为三个阶段:基础篇、STL 篇、高阶数据结构与算法篇,相关重点内容如下:

  1. 基础篇类与对象(涉及C++的三大特性等);
  2. STL 篇学习使用 C++ 提供的 STL 相关库
  3. 高阶数据结构与算法篇手动实现自己的 STL 库设计实现高阶数据结构,如 B树、B+树、红黑树等。

学习集:

  • C++ 入门到入土!!!学习合集
  • Linux 从命令到网络再到内核!学习合集

本期内容:C++ C11 标准中 关键字 auto 的基本介绍与使用

  • 该关键字的应用在此篇内容作基本介绍,其使用价值将在 STL 迭代器、lambda 表达式等处有显著体现。

目录:
1. 类的基本认识
2. 类的作用域
3. 类的两种定义方式
- - 3.1 内联式定义
- - 3.2 成员函数声明定义分离式定义【推荐】
4. 类中成员变量的命名建议
5. 简单对比C++中类与结构体的区别
6. 相关文章推荐


【 C++学习合集链接 】


1. 类的基本认识

class 为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略


类体中内容称为类的成员

  • 类中的变量称为类的属性或成员变量;
  • 类中的函数称为类的方法或者成员函数。
/* 类的声明 */
class className;

/* 类的定义形式 */
class className{
	...
};

2. auto 的用法及使用示例

类定义了一个新的作用域,类的所有成员都在类的作用域中。

在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。


3. 类的两种定义方式

3.1 内联式定义

内联式定义:声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

// 声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。
/* 示例 */
class Person{
   	char name[20];
    int age;
    
    void showInfo(){
        cout << name << "\t" << age << endl;
    }
};

3.2 成员函数声明定义分离式定义【推荐】

一般情况:【注意:强调一般情况,后续文章会介绍特殊情形】

  • 成员属性/变量声明在类的内部【头文件中】;
  • 成员函数/方法声明在类的内部【头文件中】;
  • 成员函数/方法定义在对应的cpp文件中。

注:

  1. 若是小函数(简短)可声明定义在类内!
  2. 若是大函数(较复杂)声明在类内,定义在类外!
// 类声明放在.h文件中,成员函数定义放在.cpp文件中,
/* 注意:成员函数的定义方式:函数类型 类名::函数名(){} */
/* 推荐使用第二种形式 */
// xxx.h
class Person{
    char name[20];
    int age;
    
    void showInfo();
};

// xxx.cpp
/* 注意:成员函数的定义方式:函数类型 类名::函数名(){} */
void Person::showInfo(){
	cout << name << "\t" << age << endl;
}

4. 类中成员变量的命名建议

由于类中的方法可能存在传参,如:含参构造函数等,推荐类型成员变量的命名形式为:下划线开头,用于区分函数形参和类成员变量【如下代码示例】

class Person{
public:
    void InitValue(int num){
        _num = num;				
    }
private:
    int _num;		// 下划线开头:区分函数形参和类成员变量
};

5. 简单对比C++中类与结构体的区别

  • C++ 需要兼容 C 语言,所以 C++ 中 struct 可以当成结构体使用。

  • 另外C++中struct还可以用来定义类。和 class 定义类是一样的。


  • 区别是 struct 定义的类默认访问权限是public,class定义的类默认访问权限是private。

注意:在继承和模板参数列表位置,struct和class也有区别,后序给大家介绍。


5. 相关文章推荐

1. 上期文章:C++ 学习 ::【基础篇:08】:C++ 中 struct 结构体的认识【面试考点:C 与 C++ 中结构体的区别】

你可能感兴趣的:(C++,基础篇学习合集,c++,学习,开发语言,笔记)