美文网首页
C++类的注意事项

C++类的注意事项

作者: 不惜留恋_ | 来源:发表于2020-05-15 17:11 被阅读0次
  1. 类的声明放在头文件中,类的实现放到cpp文件中
  2. 如果要把一个类的函数定义了内联函数,可以在声明中直接定义,或者在实现中添加inline关键字。
  3. 如果类没有任何构造函数,那么系统会提供一个无参的默认构造函数。如果提供了任何形式的构造函数,系统将不再提供无参的默认构造函数。

创建类对象的方式

Person p; // 调用无参构造函数
Person p1("David", 12); // 调用有参默认构造函数
Person p_person = new Person("Frank", 12); // 调用有参默认构造函数
Person p2 = {"david", 23}; // C++11的{}初始化方式
Person p3{"Frank", 12}; // C++11,省略等号
Person p4{}; // C++11,调用无法构造函数

const 成员函数

如果一个对象被const修饰,那么这个对象所有属性将不再改变

// const类型对象,对象属性不再改变
const Person p("david", 12);

但是如果这个对象,调用了可以改变属性的函数,那么编译器将会报错,因此需要在函数后面声明一个 const,表示函数不会修改对象的属性

// 声明
void show() const;

// 定义
void show() const 
{
    // ...
}

const函数规则: 如果函数不修改对象的属性,那么尽量声明为const函数。

this指针

this指针指向调用函数的类对象,因此如果要返回类对象,必须执行解引操作,也就 *this

类的常量

如下定义方式是错误的

class Test
{
    const int MONTHS = 12;
    double cost[MONTHS];
};

类的声明只是一个形式,在没有创建对象之前,MONTHS不会被分配内存,因此编译器在编译这段代码时,无法识别MONTHS的值。

可以使用枚举或静态变量,在类的声明中创建常量,因为它们在编译期就分配了内存

class Test
{
    // 静态变量在编译期就分配内存
    static const int MONTHS = 12;
    double cost[MONTHS];
};
class Test
{
    enum {MONTHS = 12};
    double cost[MONTHS];
};

相关文章

  • C++基础-(IO和文件操作)

    C++基础 IO和文件操作 标准输入输出的设备名有哪些 文件输入类的类名是:iostream 输出流注意事项计算顺...

  • C++类的注意事项

    类的声明放在头文件中,类的实现放到cpp文件中 如果要把一个类的函数定义了内联函数,可以在声明中直接定义,或者在实...

  • qml与c++交互,不涉及传参

    注意事项: 新建的c++类必须是QObject的,我这边的Qt在我新建完一个类的时候,是不会自动导入头文件的,所以...

  • C++设计类的注意事项

    构造函数 如果没有声明构造函数,编译器会定义一个默认构造函数(无参数、无内容),让你可以不初始化来直接创建对象: ...

  • 在Xcode使用C++的若干注意事项

    在Xcode使用C++的若干注意事项 在Xcode下使用C++,需要设置目标C++文件对应相应的编译器。其中,C+...

  • C++系列之面向对象

    C++类&对象 C++类定义 类&对象详解 概念描述类成员函数[https://www.runoob.com/cp...

  • c++类相关

    c++结构体与c结构体的区别 c语言 c++ c++类的使用 类的权限管理 对类的成员的访问做限制 private...

  • C++ — 类 & 对象超详解

    C++ 类 & 对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ ...

  • C++零基础教程之类和对象初识

    C++ 类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核...

  • C++面向对象

    C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...

网友评论

      本文标题:C++类的注意事项

      本文链接:https://www.haomeiwen.com/subject/spncohtx.html