c++练手bug 记录

编码的能力提升方法:阅读 码代码 无限循环

2024.07.15

bug1:

#include <iostream>
#include <string.h>

class Person{
public:
    char name[32];
    int age;

    Person(){
        strcpy(name , '\0');//直接赋值会报错,不支持指定数组类型
        age= 0;
    }

    Person(const char* n, int a){
       strncpy(name,n,sizeof(name)-1);
       name[sizeof(name)-1] = '\0';
       age = a;
    }
};


int main()
{
    //2024.07.15
    Person p1;
    Person p2 = Person();
    Person p3("Tom",25);
    Person p4 = Person("Lion",18);
    Person p5{"Jerry",30};//c++11 以后比较受欢迎
    Person();
    Person("Long",20);
return 0;
}

一开始是 name =" "; 结果报错,数组名不可以直接赋值字符串,需要使用strpy函数

bug2:Data ob;//报错,实现了拷贝构造,编译器不自动生成默认的构造函数。

#include <iostream>
#include <string.h>
using namespace std;

/*
 * 析构*
 * */
class Data{
public:
    int a;
    char* name;

public:
//    Data(){
//        a = 100;
//        cout<<"无参构造函数"<<endl;
//    }
    Data(int p){
        a = p;
        cout<<"有参构造函数"<<a<<endl;
    }
    Data(int p,const char* str){
        a = p;
        name = new char[strlen(str)+1];
        strcpy(name,str);
        cout<<"有参构造函数"<<a<<", "<<name<<endl;
    }

    //拷贝构造
    Data(const Data& ob){
        a = ob.a;
    }
    ~Data(){
        cout<<"析构函数"<<a<<endl;
        if(name!=NULL)
            delete[] name;
    }
};



int main()
{
    Data ob;
    Data ob01(200,"Lion");
    cout<<ob01.name<<endl;

    Data ob02 = ob01;

    return 0;
}

所以;以后一般都确保你的类中将所有的构造函数都添加了,避免出现编译错误

记:实现了有参构造,编译器不自动生成默认的无参构造函数。

实现了有参构造或无参构造函数,不影响编译器自动生成默认的拷贝构造函数。

相关推荐

  1. c++bug 记录

    2024-07-16 09:38:01       23 阅读
  2. C#语言小功能

    2024-07-16 09:38:01       49 阅读
  3. GraphSAGE项目

    2024-07-16 09:38:01       22 阅读
  4. bug 记录

    2024-07-16 09:38:01       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 09:38:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 09:38:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 09:38:01       58 阅读
  4. Python语言-面向对象

    2024-07-16 09:38:01       69 阅读

热门阅读

  1. Git无法验证服务器证书

    2024-07-16 09:38:01       21 阅读
  2. 【python自动创建文件夹】

    2024-07-16 09:38:01       24 阅读
  3. Top N(前N大或前N小)的算法问题

    2024-07-16 09:38:01       25 阅读
  4. Qt/QML学习-ComboBox

    2024-07-16 09:38:01       29 阅读
  5. 【精简版】jQuery 中的 Ajax 详解

    2024-07-16 09:38:01       24 阅读
  6. 力扣 144题 二叉树的前序遍历 记录

    2024-07-16 09:38:01       25 阅读
  7. ref 和 reactive 区别

    2024-07-16 09:38:01       25 阅读
  8. vue + TinyMCE实现富文本编辑器

    2024-07-16 09:38:01       25 阅读
  9. 如何在本网站中显示所有Logistic回归超参数

    2024-07-16 09:38:01       25 阅读
  10. NIO(NO-Blocking I/O)模型

    2024-07-16 09:38:01       24 阅读