Почему не дает использовать функцию strcpy()

Создал простой класс, что бы посмотреть различия между string и char. Почему то не дает использовать функцию strcpy() и приходится делать присваивание массиву через цикл for. Почему так? И еще, прошу оценить код. Задание было создать класс и написать 3 конструктора. Отредактировал.

Вот в данном участке кода, если добавить strcpy() компилятор VS 2019 выдаст ошибку

Ошибка C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 
Person::Person(const string& ln, const char* fn)
{
    lname = ln;
    strcpy(fname, fn);
}

А вот тут версия через цикл for и все работает. Почему так?

#pragma once
#include <iostream>
using namespace std;
class Person
{
private:
    static const int LIMIT = 25;
    string lname;
    char fname[LIMIT];
public:
    Person();
    Person(const string& ln, const char* fn );
    Person(const string& ln);
    Person(const char* fn);
    void Show();
    void formalShow();
};  

И непосредственно файл с описаниями методов этого класса:

#include "Person.h"
Person::Person()
{
    lname = "Name";
    fname[0] = 'S';
    fname[1] = 'u';
    fname[2] = 'r';
    fname[3] = 'n';
    fname[4] = 'a';
    fname[5] = 'm';
    fname[6] = 'e';
    fname[7] = '\0';
    
}
Person::Person(const string& ln, const char* fn)
{
    lname = ln;
    for (int i = 0; i < strlen(fn); i++)
        fname[i] = fn[i];
    fname[strlen(fn)] = '\0';
}
Person::Person(const string& ln)
{
    lname = ln;
    fname[0] = 'S';
    fname[1] = 'u';
    fname[2] = 'r';
    fname[3] = 'n';
    fname[4] = 'a';
    fname[5] = 'm';
    fname[6] = 'e';
    fname[7] = '\0';
}
Person::Person(const char* fn)
{
    lname = "Name";
    for (int i = 0; i < strlen(fn); i++)
        fname[i] = fn[i];
    fname[strlen(fn)] = '\0';

}
void Person::Show()
{
    cout << "Name: " << lname << endl;
    cout << "Surname: ";
    for (int i = 0; i < strlen(fname); i++)
        cout << fname[i];
    cout << endl;
}
void Person:: formalShow()
{
    cout << "Surname: ";
    for (int i = 0; i < strlen(fname); i++)
        cout << fname[i];
    cout << endl;
    cout << "Name: " << lname << endl;
}

Ответы (0 шт):