我对C ++中的多态感到困惑。我正在自己研究它,并且了解它的主要功能。但是我不明白为什么会有帮助。在研究多态性(关于oop)之前,我研究了继承(这很有用,因为您只能在一次超类和子类的编写中使用一个方法)。现在,我被多态性和virtual关键字所困扰。我不明白为什么会有帮助。请参阅下面的代码(这是有关C ++研究所的练习(我将获得认证))。为什么可以将仅虚函数声明为“虚”函数?我添加的代码中的变量n1,n2,n3(公开),为什么我不能访问它们?我根本不了解多态性,我在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++ 上创建目录的研究,并找到了很多方法来做到这一点,有些方法比其他方法更容易。
我尝试_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) 我看到了我不久前完成的一个古老的简单算法。我是用 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++ ×3
char ×1
directory ×1
inheritance ×1
mkdir ×1
pointers ×1
polymorphism ×1
string ×1
virtual ×1