为什么不new返回NULL失败?为什么它只在失败时抛出异常?
因为它在成功时返回指向对象的指针,为什么不在失败时呢?这种行为有什么具体原因吗?
我最近看过工厂设计模式,因为他提到了正常方法中的一个问题
*需要在客户端类中使用new关键字.
因此,通过使用工厂,我们已经实现了这一点(客户端不使用新的).但是从客户端隐藏新东西有什么好处?
一个问题是当客户端使用新的关键字时,他负责删除该内存.如果我们也使用工厂,我们仍然需要这样做,当客户端在最后创建一个对象时,客户端必须删除它(工厂不会删除它们).
我理解,其他优点,如重用现有代码,无需更改客户端代码.但是我对从客户端隐藏新(甚至是类)所取得的成果感到困惑.
提前致谢.
这个单例线程对于前C++ 11编译器是否安全?正如我们对C++ 11所知,它是线程安全的.
class Singleton
{
private:
Singleton(){};
public:
static Singleton& instance()
{
static Singleton INSTANCE;
return INSTANCE;
}
};
Run Code Online (Sandbox Code Playgroud) 我有2个基类(B1和B2),它们是从公共基类(B)派生出来的,它们有一个公共变量(let:int x;来自基数B),在第一个基数中x=0,在第二个基数中x=10(默认值在B1中给出, B2构造函数).
视觉:
class B
{
int x;
protected:
B(int x) : x{x}{}
};
class B1 : public B
{
protected:
B1() : B(0){}
};
class B2 : public B
{
protected:
B2() : B(10){}
};
Run Code Online (Sandbox Code Playgroud)
现在,如果我再推导一个类:
class D : virtual public B1, virtual public B2
{
public:
D() : B1{}, B2{}{}
};
Run Code Online (Sandbox Code Playgroud)
这里只有一个x的副本可用于虚拟概念,现在如果我尝试使用派生类对象访问x值,那么x的实例将在O/p(x=0或x=10)中得到,为什么?
而不是在" extern "C" {}" 中写入每个函数,我可以在该块内写入整个头文件.
extern "C"
{
#include "myCfile.h"
}
Run Code Online (Sandbox Code Playgroud)
我试过这个,但它根本不工作,为什么它不起作用?如果我们必须在c ++项目中使用100 C函数,我们是否需要提供extern块中的所有函数,还有其他简单的方法吗?
例如:
extern "C"
{
void fun1();
void fun2();
void fun3();
void fun4();
void fun5();
.
.
.
.
fun100();
}
Run Code Online (Sandbox Code Playgroud)
有没有其他简单的方法,如extern "C" { myCfunctions.h }???
我最近在一次采访中遇到了一个问题。
C++ 结构体和类在内存方面有什么区别?
我知道它们在所有方面都是相同的,除了继承时的访问说明符&在成员变量的情况下。
除此之外,内存方面是否存在真正的差异(可能是内存分配或销毁或内存管理等)???
编辑:我不太确定为什么面试官在没有区别的情况下问这个问题。我在这里发现了类似的问题 ,请参阅该链接的第二条评论,他问了同样的问题,但没有答案。我想应该是有区别的。
提前致谢。
我遇到了以下用例,但我找不到合适的解决方案.有没有办法用条件来代替字符串"<"或">" <或>在if条件?
例:
string condition = "<";
if (10 condition 8) // Here I want to replace condition with <
{
// Some code
}
Run Code Online (Sandbox Code Playgroud)
我不想这样做:
if ("<" == condition)
{
if (10 < 8)
{
}
}
else if (">" == condition)
{
if (10 > 10)
{
}
}
Run Code Online (Sandbox Code Playgroud)
而且我的病情会在运行期间发生变化.如果存在于上面,我只是在寻找一种简单的方法.
使用案例:用户将提供如下查询:
input: 10 > 9 => output: true
input: 10 < 7 => output: false
Run Code Online (Sandbox Code Playgroud)
基本上我需要解析这个查询,因为我将这3个单词(10,>,9)作为字符串,并且我想以某种方式将字符串">"或"<"转换为实际符号>或<.
我正在 Visual Studio 2010 中生成 .dll。.lib、.dll、.pdb 文件在输出文件夹中生成。
为什么.lib(是静态lib吗?)与dll一起生成,它有什么用处以及它实际上包含什么?
(在 Linux 中,除了 .so 之外,它不能有任何其他文件,但为什么在 Windows 中)。
这个 .pdb 文件是什么,它包含什么以及它有什么用处?
提前谢谢:)
我在下面写了示例批处理脚本,变量COUNT正在更新但不知何故MY_ROOT没有得到更新,我在这里遗漏了什么?
@echo off
setlocal ENABLEDELAYEDEXPANSION
set MY_ROOT= C:\
set COUNT=0
if 1 == 1 (
set MY_ROOT = D:\
echo MY_ROOT = !MY_ROOT!
set /A COUNT=10
echo Count = !COUNT!
)
:end
**o/p:**
MY_ROOT = C:\
Count = 10
Run Code Online (Sandbox Code Playgroud)
谢谢.