C++基础语法总结

C++基础语法总结,第1张

C++基础语法总结 构造函数 默认构造函数
  • 如果类内部没有显式写出构造函数,编译器会自动生成一个默认构造函数。
初始化构造函数
  • explicit防止隐式调用,默认是implicit.
  • 在声明explicit base(int _data)以后调用a = 1,仍可以进行隐式转换,原因是base(double _data),编译器先把int转成double,再调用base(double _data)。
拷贝构造函数
  • 同样地,没有显式写出拷贝构造函数,编译器会自动生成一个。
#include 

class base {
public:
  // 默认构造函数
  base() = default;

  // 初始化构造函数
  // explicit防止隐式调用
  explicit base(int _data) : data(_data) {}
  base(double _data) : data1(_data) {}

  // 拷贝构造函数
  base(const base &b) : data(b.data), data1(b.data1) {
    std::cout << "调用复制构造函数!" << std::endl;
  }

  void print() const {
    std::cout << data << " " << data1 << std::endl;
  }

  ~base() {
    std::cout << "调用析构函数!" << std::endl;
  }

private:
  int data{};
  double data1{};
};

int main() {
  base a(1.0);         // 栈变量
  base *b = new base();// 堆指针
  b->print();
  std::cout << "=========" << std::endl;
  a.print();
  a = 2.0;  // 隐式转换,调用base(double)构造函数
  a.print();// 输出0 2
  a = 1;    // 仍然可以隐式转换,explicit可以避免单参数构造函数隐式调用
  a.print();// 输出0 1
  std::cout << "=========" << std::endl;
  b = new base(a);// 调用复制构造函数
  b->print();
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5098704.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-17
下一篇2022-11-16

发表评论

登录后才能评论

评论列表(0条)

    保存