小编Ric*_*rdo的帖子

C ++中的多态和虚拟

我对C ++中的多态感到困惑。我正在自己研究它,并且了解它的主要功能。但是我不明白为什么会有帮助。在研究多态性(关于oop)之前,我研究了继承(这很有用,因为您只能在一次超类和子类的编写中使用一个方法)。现在,我被多态性和virtual关键字所困扰。我不明白为什么会有帮助。请参阅下面的代码(这是有关C ++研究所的练习(我将获得认证))。为什么可以将仅虚函数声明为“虚”函数?我添加的代码中的变量n1n2n3(公开),为什么我不能访问它们?我根本不了解多态性,我在StackOverflow上阅读了很多有关多态性的文章,但这就像我了解50%的多态性一样。我注意到在python中了解多态性比较困难,因为python没有数据类型,但是我也想在C ++中理解它,以及它的可能用途。

#include <iostream>
using namespace std;
class Pet {
    protected:
    string Name;
    public:
    Pet(string n) { Name = n; }
    virtual void MakeSound(void) { cout << Name << " the Pet says: Shh! Shh!"  << endl; }
    int n1;
};
class Cat : public Pet {
    public:
    Cat(string n) : Pet(n) { }
    void MakeSound(void) { cout << Name << " the Cat says: Meow! Meow!" <<       endl; } …
Run Code Online (Sandbox Code Playgroud)

c++ polymorphism virtual inheritance

2
推荐指数
1
解决办法
119
查看次数

如何创建目录 C++(使用 _mkdir)

今天我在网上做了很多关于如何在 C++ 上创建目录的研究,并找到了很多方法来做到这一点,有些方法比其他方法更容易。

我尝试_mkdir使用_mkdir("C:/Users/...");创建文件夹的功能。请注意,函数的参数将转换为const char*.

到目前为止,一切都很好,但是当我想更改路径时,它不起作用(请参阅下面的代码)。我有一个默认的字符串 path "E:/test/new",我想创建 10 个子文件夹:new1, new2, newN, ..., new10

为此,我将字符串与一个数字(for循环的计数器)连接起来,使用 转换为字符static_cast,然后使用转换字符串c_str(),并将其分配给一个const char*变量。

编译器编译它没有问题,但它不起作用。它打印 10 次"Impossible create folder n"。怎么了?

在将字符串 usingc_str()转换为 get a时,我可能犯了一个错误const char*

另外,有没有办法使用其他东西创建文件夹?我查看了CreateDirectory();(API) 但它使用了关键字 likeDWORD HANDLE等,对于非高级级别来说有点难以理解(我不知道这些是什么意思)。

#include <iostream>
#include <Windows.h>
#include<direct.h>

using namespace std;

int main()
{
int stat;
string path_s = "E:/test/new";

for …
Run Code Online (Sandbox Code Playgroud)

c++ directory mkdir

2
推荐指数
1
解决办法
6230
查看次数

如何修复编译错误“此函数或变量可能不安全”(strcpy)

我看到了我不久前完成的一个古老的简单算法。我是用 dev-c++ 做的,但现在我在 Visual Studio 中编译了它,但它不起作用。Visual Studio 编译器说:'strcpy':此函数或变量可能不安全。考虑使用 strcpy_s 代替。要禁用弃用,请使用 _CRT_SECURE_NO_WARNINGS。(第 17 行)

在这个简单的项目中,您将输入一个短语,然后将短语翻译成十六进制(每个字符)。

那么为什么 dev-c++ 没有告诉我呢?我犯了什么错误吗?还是不行...代码没问题?我想了解这一点,因为这不是我第一次收到该错误。

代码执行示例:

请插入一句话:你好世界!字符串 -hello world!- 以十六进制转换为 68 65 6c 6c 6f 20 77 6f 72 6c 64 21

#include <iostream>
#include <iomanip>
#include <string>
#include <cstring>

using namespace std;

int main()
{
    string phrase;
    char* chArray;

    cout << "Pls insert a phrase:\t";
    getline(cin, phrase);

    chArray = new char[phrase.size() + 1];
    strcpy(chArray, phrase.c_str());         //THE ERROR IS HERE!

    cout << "The string -" << phrase << …
Run Code Online (Sandbox Code Playgroud)

c++ string pointers char

1
推荐指数
2
解决办法
4065
查看次数

标签 统计

c++ ×3

char ×1

directory ×1

inheritance ×1

mkdir ×1

pointers ×1

polymorphism ×1

string ×1

virtual ×1