【发布时间】:2020-03-15 14:32:32
【问题描述】:
我对 C++ 还很陌生,但仍在尝试理解指针以及何时需要它们。但是对于这个问题,我正在四处寻找创建头文件和类。 我的第一个“测试”是创建一个可以处理“日志”的类,所以我这样做了。
记录器.h
#pragma once
#include <iostream>
using namespace std;
class Logger
{
public:
Logger();
void logC(const char* message);
void logCA(const char message[]);
void logS(string message);
};
记录器.cpp
#include "Logger.h"
Logger::Logger() {
}
void Logger::logC(const char* message)
{
cout << message << endl;
}
void Logger::logCA(const char message[])
{
cout << message << endl;
}
void Logger::logS(string message)
{
cout << message << endl;
}
然后在我的主要功能上,我只是这样使用它们。
#include "Logger.h"
int main(){
Logger myLogger;
myLogger.logC("Hello");
myLogger.logCA("Alo");
myLogger.logS("Hola");
cout << endl;
system("pause");
return 0;
}
这里有几个问题。为什么我会使用一种方法而不是其他方法。而且,在 const char* 方法上,为什么这是一个指向 char 的指针,它需要一个 char 数组作为有效,而且,如果它接收到一个 char 位置的地址,为什么输出是整个数组而不是它所在的内存地址。 (而且它还“知道”在哪里停止,它不会从那个地址永远打印出来)
【问题讨论】:
-
当声明为参数时,数组声明被翻译为指针。这意味着
const char message[]确实等于const char* message。 -
请在每个帖子中保留一个问题。 为什么我会使用一种方法而不是其他方法如果您没有特定的用例,这不是一个好问题。
-
如果你真的是c++新手,我建议干脆不要使用指针,你可以在了解一些c++概念后回到它。
-
好吧,在这种情况下,有一个特定的用例。将字符串记录到控制台是用例。
-
这是首要目标。 apple 苹果在一个较低的层次上讨论:实现该目标的特定方法的用例。 “将字符串记录到控制台”可以通过多种不同的方式完成